selenium webdriver 无法使用 driver.find_element_by_css_selector 单击按钮
selenium webdriver can't click on button using driver.find_element_by_css_selector
无法使用 driver.find_element_by_css_selector
单击按钮
我尝试使用这个定位元素driver.find_element_by_css_selector
driver.find_element_by_css_selector('#minicart-content-wrapper > div.block-content > div.actions-wrapper > div:nth-child(1) > div > a')
并且有这个代码
<a class="action viewcart" data-bind="attr: {href: shoppingCartUrl}" href="https:..." data-uw-styling-context="true" data-uw-rm-brl="false"> <span data-bind="i18n: 'View and Edit Cart'" data-uw-styling-context="true">View Cart</span> </a>
我尝试使用 x_path //*[@id="minicart-content-wrapper"]/div[2]/div[5]/div[1]/div/a
但它不起作用
请检查 dev tools
(Google chrome) 我们是否在 HTML-DOM
中有 unique 条目。
你应该检查的 xpath :
//a[contains(.,'View Cart')]
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 xpath
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
如果是独一无二的匹配项,请按如下所示单击它:
代码试用 1:
time.sleep(5)
driver.find_element(By.XPATH, "//a[contains(.,'View Cart')]").click()
代码试用2:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(.,'View Cart')]"))).click()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
推荐代码试用 2。
根据查询中提供的 html 代码,以下定位器策略应该有效:
来自 CLASS_NAME:
driver.find_element(By.CLASS_NAME, 'action viewcart'])
来自 CSS_SELECTOR:
driver.find_element(By.CSS_SELECTOR, '.action viewcart'])
OR
driver.find_element(By.CSS_SELECTOR, "a[class='action viewcart']")
通过 XPATH(带文本):
driver.find_element(By.XPATH, "//*[text()='View Cart']")
来自 LINK_TEXT:
driver.find_element(By.LINK_TEXT, 'View Cart'])
通过 XPATH(包含):
driver.find_element(By.XPATH, "//span[contains(text(), 'View and Edit Cart')"])
建议大家使用explict wait
如WebdriverWait
等到元素为visible/clickable等
无法使用 driver.find_element_by_css_selector
单击按钮我尝试使用这个定位元素driver.find_element_by_css_selector
driver.find_element_by_css_selector('#minicart-content-wrapper > div.block-content > div.actions-wrapper > div:nth-child(1) > div > a')
并且有这个代码
<a class="action viewcart" data-bind="attr: {href: shoppingCartUrl}" href="https:..." data-uw-styling-context="true" data-uw-rm-brl="false"> <span data-bind="i18n: 'View and Edit Cart'" data-uw-styling-context="true">View Cart</span> </a>
我尝试使用 x_path //*[@id="minicart-content-wrapper"]/div[2]/div[5]/div[1]/div/a
但它不起作用
请检查 dev tools
(Google chrome) 我们是否在 HTML-DOM
中有 unique 条目。
你应该检查的 xpath :
//a[contains(.,'View Cart')]
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 xpath
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
如果是独一无二的匹配项,请按如下所示单击它:
代码试用 1:
time.sleep(5)
driver.find_element(By.XPATH, "//a[contains(.,'View Cart')]").click()
代码试用2:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(.,'View Cart')]"))).click()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
推荐代码试用 2。
根据查询中提供的 html 代码,以下定位器策略应该有效:
来自 CLASS_NAME:
driver.find_element(By.CLASS_NAME, 'action viewcart'])
来自 CSS_SELECTOR:
driver.find_element(By.CSS_SELECTOR, '.action viewcart'])
OR
driver.find_element(By.CSS_SELECTOR, "a[class='action viewcart']")
通过 XPATH(带文本):
driver.find_element(By.XPATH, "//*[text()='View Cart']")
来自 LINK_TEXT:
driver.find_element(By.LINK_TEXT, 'View Cart'])
通过 XPATH(包含):
driver.find_element(By.XPATH, "//span[contains(text(), 'View and Edit Cart')"])
建议大家使用explict wait
如WebdriverWait
等到元素为visible/clickable等