消息:过时的元素参考:使用Selenium Python单击网页上的多个链接时,元素未附加到页面文档

时间:2020-07-16 20:02:15

标签: python-3.x selenium xpath css-selectors staleelementreferenceexception

我试图点击此page上的所有课程链接,但这给了我这个错误:

Message: stale element reference: element is not attached to the page document

这是我的代码:

driver = webdriver.Chrome()
driver.get('https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572')
driver.implicitly_wait(10)
links = driver.find_elements_by_xpath('//*[@id="table_block_n2_and_content_wrapper"]/table/tbody/tr[2]/td[1]/table/tbody/tr/td/table/tbody/tr[2]/td/div/div/ul/li/span/a')

for link in links:
    driver.execute_script("arguments[0].click();", link)
    time.sleep(3)
driver.quit()

有什么解决方法吗?

1 个答案:

答案 0 :(得分:2)

要点击页面https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572上的所有课程链接,您可以使用以下Locator Strategies中的任何一个:

  • 使用CSS_SELECTOR

    driver.get("https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572")
    links = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "li.acalog-course>span>a")))
    for link in links:
        link.click()
        time.sleep(3)
    driver.quit()
    
  • 使用XPATH

    driver.get("https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572")
    links = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//li[@class='acalog-course']/span/a")))
    for link in links:
        link.click()
        time.sleep(3)
    driver.quit()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

参考

您可以在以下位置找到有关StaleElementReferenceException的详细讨论: