gpt4 book ai didi

Python、Selenium + 陈旧元素引用

转载 作者:行者123 更新时间:2023-12-01 02:26:35 24 4
gpt4 key购买 nike

我正在尝试访问网页,保存一组我想要点击的页面链接,然后我想单击每个链接,如果是 for 循环(在页面上来回移动。这是代码:

from selenium import webdriver


driver = webdriver.Chrome(executable_path='/Applications/chromedriver')
driver.get("webpage link") #insert link to webpage
list_links = driver.find_elements_by_xpath("//a[contains(@href,'activities')]")


for link in list_links:
print(link)
link.click()
driver.goback()
driver.implicitly_wait(10) # seconds
driver.quit()

但是,当我第一次返回主页时,我收到错误消息:

StaleElementReferenceException: stale element reference: element is not attached to the page document.

谁能帮我理解为什么?提出解决方案?谢谢。非常感谢。

最佳答案

您的list_links仅在定义它的页面上有效。第一次单击链接后,重新创建 DOM,对 list_links 元素的引用将变得无效。您可以应用以下解决方案:

driver.implicitly_wait(10) # seconds
list_links = [link.get_attribute('href') for link in driver.find_elements_by_xpath("//a[contains(@href,'activities')]")]

for link in list_links:
print(link)
driver.get(link)
driver.goback()
driver.quit()

附注我假设 goback() 是您已经定义的自定义方法,因为 Selenium 内置函数中没有这样的方法,而只是 back()

P.P.S。请注意,您只能在代码中调用 driver.implicitly_wait(10) 一次,它将适用于所有接下来的 find_element...() 调用

关于Python、Selenium + 陈旧元素引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com