因此,几年前,我制作了一个脚本,该脚本将使用硒来导航商店,通过商品名称查找商品,然后选择商品。我试图通过查看我的旧代码来重新制作它,但是它无法正常工作。我正在尝试使用硒单击在项目上使用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')
这是包含我要使用硒查找并单击的文本的元素
<a class="name-link" href="/shop/jackets/g1ze294ol/qapno01c2">GORE-TEX Taped Seam Jacket</a>
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)
答案 0 :(得分:1)
您需要等到元素可单击。这将单击页面上的第一个匹配链接。
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)
答案 1 :(得分:0)
执行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()