【发布时间】:2019-02-03 23:47:11
【问题描述】:
我一直在尝试在三个不同的网络链接中运行以下代码。代码在一个网络链接上运行良好。但是,它会引发有关“消息:过时元素引用:元素未附加到页面文档”的错误消息。我查看了论坛之前的两个线程(Python Selenium stale element fix 和How to Navigate to a New Webpage In Selenium?)关于相同的错误消息,但没有解决这个问题。 这是我的代码:
driver.get('https://github.com/avassalotti')
contributions = driver.find_elements_by_xpath(".//ul[@class='filter-list small']//li")
print(contributions)
for item in contributions:
print (item)
print(item.text)
item.click()
time.sleep(3)
contribution = driver.find_element_by_xpath(".//*[@class='f4 text-normal mb-2']").text
print(contribution)
程序适用于此链接 (https://github.com/alex),不适用于 (https://github.com/agronholm, https://github.com/avassalotti)。
任何解决问题的建议。
【问题讨论】:
-
这是您必须使用 WATIR 的完美用例,一旦它过时,它就会完美地恢复元素。我在 WATIR 中运行它,它运行良好。如果您的项目还没有走得太远,您可以使用位于 Ruby Selenium Binding 顶部的 WATIR。
-
试试
for item in driver.find_elements_by_xpath(".//ul[@class='filter-list small']//li"),这样每次迭代都会更新列表 -
@Andersson 我不懂 Python,但是 Ruby 也有类似的 for 循环,它不会每次都执行
driver.find_elements,它开始在集合上执行由driver.find_elements返回,所以它肯定会过时。 -
@Rajagopalan,是的。当然。那是仓促的决定:)
标签: python selenium selenium-webdriver webdriverwait staleelementreferenceexception