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

为什么在python中尝试使用Selenium访问元素的文本时会出现过时的元素异常?[重复]

丘智志
2023-03-14

我试图使用Selenium在下拉菜单中读取元素的文本,但是当我使用“element.text”时,我得到了一个陈旧的元素异常。这是我的代码

    list_options = driver.find_elements_by_class_name("select2 results__option")
    for l in list_options:
        if l.text == "DOI":
            l.click()

这是我一直收到的错误消息:

if l.text == "DOI":
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-    packages/selenium/webdriver/remote/webelement.py", line 76, in text
return self._execute(Command.GET_ELEMENT_TEXT)['value']
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
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=75.0.3770.80)
(Driver info: chromedriver=74.0.3729.6 
(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.1 x86_64)

任何帮助都将不胜感激,因为我是硒的新手。谢谢!

共有1个答案

闾丘冠玉
2023-03-14

当您单击该项时,页面将被刷新,并且您引用的元素(存储在变量中)已过时。页面刷新以这样一种方式更改内容,即您存储的确切元素不再在页面上。为了克服这个问题,需要在for循环中重新分配下拉列表。

试试下面的代码。

list_options = driver.find_elements_by_css_selector('.select2.results__option')
for l in range(len(list_options)):
  new_list_options = driver.find_elements_by_css_selector('.select2.results__option')
  if new_list_options[l].text == "DOI":
      new_list_options[l].click()
 类似资料:
  • 问题内容: 我正在尝试在以下网站中输入用户名和密码:https : //www.thegreatcoursesplus.com/sign- in 这给出了以下异常: 然后我尝试使用Java脚本: 没有错误,但没有文本发送到“电子邮件地址”字段。 有人可以指导我以正确的方式输入电子邮件地址,密码,然后单击“登录”。 感谢您的协助 问题答案: 此错误消息… …表示所需的 元素 在 WebDriver

  • 我试图自动化一个场景,条件是我必须选择所有下拉选项,然后逐个单击这些选项。我尝试了代码,但它只点击了第一个选项,。将错误显示为陈旧元素是不可点击的。请帮忙。

  • 我正在使用以下代码检索我的链接: 接下来,我呼吁: 然后 并且抛出过时的元素异常。 现在,考虑到,我本以为可以避免这个问题,但它仍然存在。 我很想在加载页面源代码后,将其放入lxml中,以完全避免这个问题。 建立和迭代链接之间的时间最多为一秒钟。 有没有其他人遇到过这样的问题,并找到了解决方案? 感谢您的指导。

  • 下面是我正在努力工作的代码。 我从一个站点地图页面获取所有锚元素,然后将所有这些元素放入一个列表中。然后,我使用从所有这些元素获取URL。在这里之前,代码运行良好。 然而,之后我将这些URL作为参数,并将其传递到方法,以使用。代码一直工作到第一个链接,但一旦加载了第一个页面,就会出现stale元素异常。

  • 好的,我阅读了所有其他的链接,我尝试了上述不同解决方案的变体,但是它们都不适合我。 我的问题是,我有以下代码: 然而,我得到了以下错误: 这是篮子图标的css路径,它在菜单上。 网站是GWT,步骤如下:1。点击物品添加到购物篮2。增加到第三篮。点击篮子进入篮子。 然而,我似乎无法做到这一点。

  • 大家好,我正在使用selenium webdriver,在运行下面的脚本时,我在脚本中突出显示的位置遇到了陈旧元素异常错误。 我的脚本停在那里,我不能运行。 错误消息为-Stale元素异常错误。在缓存中找不到该元素,可能是页面在查找后发生了更改。 在这种情况下,请任何人帮助我,并指导我纠正这个错误。 你好Vignesh K S