我刚开始使用硒。现在我有了要单击的所有链接。此链接使我进入要剪贴的页面。当驱动程序单击第一个链接时,它工作正常,但单击第二个链接,我得到的消息为:
Message: stale element reference: element is not attached to the page document
def view_All_pages(driver , file_object):
#All the Links that i want to click
list_of_links = driver.find_elements_by_xpath("//a[@class='@ClassName']")
for link in list_of_links:
time.sleep(10)
link.click() #Getting the error here
scraping_Normal_page(driver , file_object)
driver.back()
我要抓取页面,然后返回到打开的页面,然后单击下一个链接。帮助将不胜感激
答案 0 :(得分:0)
陈旧元素引用当对(已经找到并保存)元素的引用发生更改时,将引发异常。在您的情况下,您导航到一个新页面,但您的列表包含父页面一部分的已保存元素。因此,当您向后导航时,列表中的元素会过时。
这可以通过重新初始化从废弃网页上的导航包中的元素/列表来解决。您必须在列表上更改迭代以迭代索引。
def view_All_pages(driver , file_object):
#All the Links that i want to click
list_of_links = driver.find_elements_by_xpath("//a[@class='@ClassName']")
length_of_list = len(list_of_links)
# Iterate over the list based on index
i = 0
while i < len(length_of_list):
time.sleep(10)
list_of_links.index(i).click()
scraping_Normal_page(driver , file_object)
driver.back()
i += 1
# Reinitialize the list of elements again
list_of_links = driver.find_elements_by_xpath("//a[@class='@ClassName']")