【发布时间】:2019-03-22 06:52:26
【问题描述】:
因此,在运行完全相同的测试时,我经常会遇到此错误。
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=69.0.3497.100)
(Driver info: chromedriver=2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db),platform=Mac OS X 10.12.6 x86_64)
唯一的问题是它似乎在代码的不同区域发生不一致。这是在尝试访问我的 ReactJS 页面的 DOM 元素(例如搜索字段)时。我通过 ROBOT 自动化框架运行它,混合使用 SeleniumLibrary 和自定义库。
我读到这听起来很简单,xPath 在 DOM 上已经过时了,但这并不能帮助我弄清楚为什么它几乎在任何时候都会发生不一致的错误。
编辑:这似乎发生在:
def filter_modality(self, filter):
filter_value = '//span[@title="{}"]//parent::li'.format(filter)
self.selib.click_element(filter_locator)
self.selib.wait_until_page_contains_element('//*[@class="multi-selector-options open"]')
self.selib.wait_until_element_is_visible(filter_value)
self.selib.click_element(filter_value )
self.selib.wait_until_page_contains_element('//div...[@class="option selector-item active"]',
error=("Could not select filter: {}".format(filter_value )))
#I get the stale element message from or after executing this click_element
self.selib.click_element(filter_locator)
self.selib.wait_until_page_does_not_contain_element('//*[@class="multi-selector-options open"]',
error="Filter dropdown did not disappear after selection")
【问题讨论】:
-
你的测试用例中有没有等待方法?如果您将部分代码分享给我们,那就太好了。
-
您能否发布一个示例,说明是哪一行机器人代码导致了此问题?您是否使用一个关键字获得对元素的引用,然后尝试在第二个关键字中对该元素执行某些操作?
-
我发布了一个 sn-p。我通常以这种风格做事,因为页面有时会有点慢。但是无论加载速度如何,我都看不到页面可以重新创建任何元素或类似的东西导致我引用的元素变得陈旧。再一次,这个问题是不一致的,这使得它更加令人沮丧。
标签: python-2.7 selenium selenium-webdriver robotframework