几周前我编写了selenium测试,它们在执行时运行良好。
现在,我在每个测试用例中都有一个StaleElementReferenceException异常。我做了一些研究,当一个DOM元素被删除或者不再附加到DOM (文档)时,这个异常就会发生。问题是在我搜索它之后我就用它了。
driver.find_element_by_id("id_subject").clear()如果没有找到元素,那么就会引发NoSuchElementException,并且在找到元素之后立即引用它,那么为什么它会引发一个StaleElementReferenceException?
完整回溯:
Traceback (most recent call last):
File "/somepath_to/tests/test_selenium.py", line 490, in test_donation_python
driver.find_element_by_id("id_subject").clear()
File "/somepath_to/env/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 73, in clear
self._execute(Command.CLEAR_ELEMENT)
File "/somepath_to/env/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 402, in _execute
return self._parent.execute(command, params)
File "/somepath_to/env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 175, in execute
self.error_handler.check_response(response)
File "/somepath_to/env/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 166, in check_response
raise exception_class(message, screen, stacktrace)
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=45.0.2421.0)
(Driver info: chromedriver=2.15.322455 (ae8db840dac8d0c453355d3d922c91adfb61df8f),platform=Mac OS X 10.7.5 x86_64)我有:
发布于 2015-06-11 10:20:15
我过去也有过同样的问题。
我没有使用python,但是这个问题是由jquery刷新页面更改DOM造成的,这些元素不再有效。这可能就是问题所在,尽管这种例外还有其他原因。
发布于 2015-06-11 10:49:49
BlunT已经给出了最有可能的场景:您有一个在find_element_by_id("id_subject")执行之后,但在.clear()执行之前刷新DOM的进程。
因为DOM刷新通常是异步的,所以有时您的Selenium代码会正常工作,有时会失败。
在过去,我使用两种一般方法解决了这个问题:
clear()操作并不重要时,此操作才能工作。如果它确实重要,那么您就不能使用此方法。https://stackoverflow.com/questions/30778022
复制相似问题