消息:陈旧元素引用:Python中未将元素附加到页面文档 [英] Message: stale element reference: element is not attached to the page document in Python
问题描述
我一直试图在三个不同的Web链接中运行以下代码.代码可以在一个Web链接上正常工作.但是,它引发有关消息:陈旧元素引用:元素未附加到页面文档"的错误消息.我查看了论坛的前两个线程( Python Selenium过时元素修复和 程序对此链接有效( https://github.com/alex ),但不适用于该链接( https://github.com/agronholm , https://github.com/avassalotti ). 任何解决此问题的建议. 要检索避免 陈旧元素引用 的贡献的详细信息,可以使用以下解决方案:>
代码块: 控制台输出: 在这里您可以找到有关 PageFactory中的StaleElementReference异常的详细讨论 I have been trying to run the following code in three different weblinks. Code works fine on one weblink. However, it throws an error message about "Message: stale element reference: element is not attached to the page document". I looked into forum's two previous threads (Python Selenium stale element fix and How to Navigate to a New Webpage In Selenium?) about the same error message but didn't get sort it out the issue.
Here is my code: Program works for this link (https://github.com/alex) and does not work for (https://github.com/agronholm, https://github.com/avassalotti). Any advice to fix the issue. To retrieve the details of contributions avoiding stale element reference you can use the following solution: Code Block: Console Output: Here you can find a detailed discussion on StaleElementReference Exception in PageFactory 这篇关于消息:陈旧元素引用:Python中未将元素附加到页面文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
years = []
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("https://github.com/agronholm")
contributions = WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='profile-timeline-year-list js-profile-timeline-year-list bg-white js-sticky float-right col-2 pl-5']/ul[@class='filter-list small']//li/a")))
for item in contributions:
print(item.get_attribute("innerHTML"))
years.append(item.get_attribute("href"))
for year in years:
driver.get(year)
print(WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='js-yearly-contributions']//h2[@class='f4 text-normal mb-2']"))).get_attribute("innerHTML"))
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
260 contributions in the last year
637 contributions in 2017
770 contributions in 2016
298 contributions in 2015
239 contributions in 2014
101 contributions in 2013
113 contributions in 2012
90 contributions in 2011
16 contributions in 2010
2 contributions in 2009
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)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
years = []
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("https://github.com/agronholm")
contributions = WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='profile-timeline-year-list js-profile-timeline-year-list bg-white js-sticky float-right col-2 pl-5']/ul[@class='filter-list small']//li/a")))
for item in contributions:
print(item.get_attribute("innerHTML"))
years.append(item.get_attribute("href"))
for year in years:
driver.get(year)
print(WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='js-yearly-contributions']//h2[@class='f4 text-normal mb-2']"))).get_attribute("innerHTML"))
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
260 contributions in the last year
637 contributions in 2017
770 contributions in 2016
298 contributions in 2015
239 contributions in 2014
101 contributions in 2013
113 contributions in 2012
90 contributions in 2011
16 contributions in 2010
2 contributions in 2009