【问题标题】:StaleElementException on Selenium LoopSelenium 循环上的 StaleElementException
【发布时间】:2018-05-21 01:34:32
【问题描述】:

我正在抓取一个目录网站以获取 url,并且每当下一个按钮不再有效时,我都会不断收到 StaleElementException。我试图弄清楚如何防止循环中断。我想在获得其余元素并且不再有下一步按钮时退出循环。

with open(provider + '-' + state + '-' + city + '-links.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    idx = 1
    while next_page is not None:
        for company in company_links_elements:
            company_url = company.get_attribute("href")
            writer.writerow((idx, company_url, provider))
            idx += 1
        time.sleep(random.randint(2, 3))
        next_page.click()
        # Get next page elements
        company_links_elements = driver.find_elements(By.XPATH,
                                                      "//h3[@class='jss320 jss324 jss337 sc-gzOgki eucExu']/a")
        company_address_elements = driver.find_elements(By.XPATH,
                                                        "//p/strong[@class='dtm-search-listing-address']")
        # Try getting the next page element
        try:
            next_page = driver.find_element(By.XPATH, "//a[@role='link'][contains(text(),'Next')]")
        except NoSuchElementException:
            break

driver.quit()

这是错误:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=66.0.3359.181)
  (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.16299 x86_64)

每当我加载新页面时,我都会尝试尝试刹车,以便在新页面不存在时进行故障转移,但这似乎不起作用。

【问题讨论】:

  • 此异常的两个可能区域是 - i) 元素已被完全删除。 ii) 元素不再附加到 DOM。
  • 在哪一行出现错误,
  • 如果循环通过一组WebElements 需要您导航到循环内的新页面,则循环将不起作用。由于您使用 XPath 进行定位,因此您可以使用 XPath 索引来循环遍历它

标签: python csv selenium while-loop try-catch


【解决方案1】:

尝试在next_page.click() 之后添加长时间睡眠/等待以进行调试,以等待点击next page 按钮后页面刷新完成

【讨论】:

    猜你喜欢
    • 2017-11-07
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2017-09-09
    • 1970-01-01
    • 2021-10-26
    • 2022-11-13
    相关资源
    最近更新 更多