0

我一直在尝试在三个不同的网络链接中运行以下代码。代码在一个网络链接上运行良好。但是,它会引发有关“消息:过时元素引用:元素未附加到页面文档”的错误消息。我查看了论坛之前的两个线程(Python Selenium stale element fixHow 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 )。

任何解决问题的建议。

4

1 回答 1

1

要检索避免过时元素引用的贡献的详细信息,您可以使用以下解决方案:

  • 代码块:

    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
    
  • 在这里您可以找到有关PageFactory 中的 StaleElementReference 异常的详细讨论

于 2018-08-29T10:42:29.370 回答