【问题标题】:Python Selenium Error - StaleElementReferenceException: Message: stale element reference: element is not attached to the page documentPython Selenium 错误 - StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面文档
【发布时间】:2021-10-20 22:31:56
【问题描述】:

今天我遇到了问题,原因是“a href”按钮没有任何 ID 可识别,那么让我们稍微解释一下这个问题......我有一个像这样的结构(假设XXX 是匿名路径):

wait = WebDriverWait(driver, 5)
el=wait.until(EC.presence_of_element_located((By.ID, 'XXX1')))
entries = el.find_elements_by_tag_name('tr') 
for i in range(len(entries)):   
    if(entries[i].find_element_by_xpath(XXX2).text==compare):
    el = wait.until(EC.element_to_be_clickable((By.ID,XXX3)))
    el.click()
    el=wait.until(EC.presence_of_element_located((By.ID, XXX4)))
    entries2 = el.find_elements_by_tag_name('tr')
    for j in range(len(entries2)):
        #Some statements...
    xpath = ".../a"
    your_element=WebDriverWait(driver,10)\
    .until(EC.element_to_be_clickable((By.XPATH,xpath)))##Here the problem
    your_element.click() 

然后,我使用 ChromeDriver 驱动程序从一个混合页面(动态和静态)获取信息,一旦我得到一个大表,在每一行内都有一个显示更多信息的按钮,然后我需要单击它也用于打开它,主要问题是当此操作迭代时,输出会显示该错误。该驱动程序是 ChromeDriver 驱动程序。总之,首先我搜索一些东西并单击搜索按钮,然后我得到一个表格,其中每一行(在最后一列的末尾)都有一个按钮,一旦打开,显示更多信息,因此我需要打开它并关闭由于下一行,它适用于第一行,但对于第二行,它会崩溃。对于如何处理此问题的任何建议,我将不胜感激。

提前致谢!

【问题讨论】:

  • 代码没有正确缩进。不完整的代码。没有错误消息添加到问题正文中。请在发布问题之前提供足够的信息

标签: python selenium google-chrome staleelementreferenceexception


【解决方案1】:

问题是您通过单击循环中的 dom 进行更改。对于先生,这从未奏效。

一种解决方案是,尝试在循环内重新查询以确保您处于正确的位置。你的第三行:

entries = el.find_elements_by_tag_name('tr')

应每次都执行并使用计数器确保您位于 <tr> 条目的正确位置。

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 2019-09-30
    • 2020-10-30
    • 2021-12-19
    • 2020-11-13
    • 2022-08-17
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多