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 waitWebdriverWait等到元素为visible/clickable等