错误:陈旧元素引用:运行表时元素未附加到页面文档

时间:2019-03-27 15:09:41

标签: python selenium selenium-chromedriver

我正在运行一个表,该表具有一些我需要访问的链接,获取此链接的内容,返回并继续滚动。这些链接没有“ href”属性,您需要单击它们才能工作。但是,当我单击它们以继续前进时,会发生此错误: “过时的元素引用:元素未附加到文档页面”

这是我执行此操作的代码:

tb = driver.find_elements_by_tag_name('table')[1] tbody = tb.find_elements_by_tag_name('tbody')[0]

对于tbody.find_elements_by_xpath('./ tr')中的行:     cols = row.find_elements_by_xpath('./ td')

link = cols[0].find_elements_by_tag_name('a')[0]
link.click()
time.sleep(4)

lines_extract = driver.find_elements_by_tag_name('tbody')[0].find_elements_by_xpath('./tr')

for le in lines_extract:
    td_num_doc = le.find_elements_by_xpath('./td')[0]
    print(td_num_doc)
    div_link_back = driver.find_elements_by_tag_name('div')[2]
    div_link_back.find_elements_by_tag_name('a')[0].click()

1 个答案:

答案 0 :(得分:0)

stale element reference是在执行分页时找不到html文档时出现的。在这种情况下,您需要重新初始化元素。请尝试以下代码。

link = cols[0].find_elements_by_tag_name('a')[0]
link.click()
time.sleep(4)

lines_extract = driver.find_elements_by_tag_name('tbody')[0].find_elements_by_xpath('./tr')

for le in range(len(lines_extract)):
    link = cols[0].find_elements_by_tag_name('a')[0]
    link.click()
    time.sleep(4)
    lines_extract = driver.find_elements_by_tag_name('tbody')[0].find_elements_by_xpath('./tr')
    td_num_doc = lines_extract[le].find_elements_by_xpath('./td')[0]
    print(td_num_doc)
    div_link_back = driver.find_elements_by_tag_name('div')[2]
    div_link_back.find_elements_by_tag_name('a')[0].click()
    time.sleep(4)

不确定是否对您有帮助。但是,link单击时我不知道来源。您还必须在循环中同时使用来源,否则会遇到类似的问题。