当前位置: 首页 > 知识库问答 >
问题:

Python Selenium:过时元素引用:元素未附加到页面文档

南宫鸿晖
2023-03-14

我的程序抛出一条错误消息“stale element reference:element未附加到页面文档”。当我查看前面的帖子(如Python Selenium陈旧元素修复)时,我发现我没有在调用click函数后更新url。我更新了网址。然而,它并没有解决这个问题。谁能指出我哪里出错了?下面是我的代码:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-infobars")
driver = webdriver.Chrome(chrome_options=chrome_options,executable_path="path of driver here")

driver.get("https://stackoverflow.com/users/37181/alex-gaynor?tab=topactivity")
if driver.find_elements_by_xpath("//a[@class='grid--cell fc-white js-notice-close']"):
    driver.find_element_by_xpath("//a[@class='grid--cell fc-white js-notice-close']").click()


inner_tabs = driver.find_elements_by_xpath("//div[@class='tabs']//a")

for inner_tab in inner_tabs:

    if inner_tab.text == "answers":
        inner_tab.click()
        time.sleep(3)
        driver.get(driver.current_url)
        continue

    if inner_tab.text == "questions":
        inner_tab.click()
        time.sleep(3)
        driver.get(driver.current_url)
        continue

driver.quit()

共有1个答案

慎弘化
2023-03-14

当您通过单击链接或driver.get()打开新URL时,它将创建新的document元素,因此旧元素(inner_tab)将失效。要解决这个问题,首先收集所有URL然后打开循环。

urls_to_visit = []

for inner_tab in inner_tabs:
    if inner_tab.text in ["questions", "answers"]:
        urls_to_visit.append(inner_tab.get_attribute("href"))

for url in urls_to_visit:
    driver.get(url)
    time.sleep(3)
 类似资料: