使用selenium通过部分链接tex单击项目时出现问题

2024-04-23 07:48:43 发布

您现在位置:Python中文网/ 问答频道 /正文

所以几年前我做了一个脚本,它使用selenium来导航一个商店,根据它们的名称定位商品,然后选择它们。我试着用我的旧代码重新编写它,但它的工作原理不一样。我尝试使用selenium来单击它发现的第一个项目,其中包含我对该项目使用inspect元素时它们所拥有的文本。但是我一直得到同样的错误,它找不到包含该文本的元素。在

from selenium import webdriver

driver=webdriver.Chrome('fakepath/fake')
driver.get("https://www.supremenewyork.com/shop/all")

driver.find_element_by_xpath("//a[@href='/shop/all/jackets']").click()
driver.find_element_by_partial_link_text('GORE-TEX')

这是一个包含文本的元素,我正试图使用selenium查找并单击它

^{pr2}$
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"GORE-TEX"}
  (Session info: chrome=76.0.3809.132)

Tags: 项目text文本元素bydriverseleniumlink
2条回答

您需要等到元素可单击为止。这将单击页面上的第一个匹配链接。在

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By


driver.get("https://www.supremenewyork.com/shop/all")
driver.find_element_by_xpath("//a[@href='/shop/all/jackets']").click()

link = WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "GORE-TEX")))
link.click()
time.sleep(3)

当执行driver.find_element_by_xpath("//a[@href='/shop/all/jackets']").click()行时,您试图单击的元素尚未准备好被单击。换句话说,您需要等到元素被加载。在

幸运的是,Selenium允许您等待某些条件,例如“可点击”。请参阅here以获取参考。在

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver=webdriver.Chrome('fakepath/fake')
wait = WebDriverWait(driver, 10)

driver.get("https://www.supremenewyork.com/shop/all")

try:
    wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@href='/shop/all/jackets']")).click()
    driver.find_element_by_partial_link_text('GORE-TEX')
finally:
    driver.quit()

相关问题 更多 >