- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习PageFactory模型。我理解这样一个事实:当我们执行 initElements
时,WebElements 就被定位了。举例来说,我单击了一个 Web 元素,因此 DOM 中的其他 Web 元素之一发生了变化。现在,显然我会在这里得到一个 StaleElementReferenceException
。我该如何解决这个问题?
我是否应该在知道 DOM 中 WebElement 的属性可能发生变化的情况下再次找到该特定 WebElement?或者还有其他方法来处理这个问题吗?
最佳答案
StaleElementReferenceException延伸WebDriverException并表示该元素的先前引用现在已过时,并且该元素引用不再存在于页面的 DOM 上。
<小时/>StaleElementReferenceException
如下:
ID
的(新)元素替换。或其他属性。findElement()
或findElements
再次寻找该元素。当我们执行 initElements 时,WebElement 位于:当您调用 initElements()
时方法,该页面的所有WebElement都将被初始化。例如,
LoginPageNew login_page = PageFactory.initElements(driver, LoginPageNew.class);
这行代码将初始化 LoginPageNew.class
范围内定义的所有静态 WebElement无论何时何地从自动化脚本调用它。
我点击了一个 Web 元素,因此 DOM 中的其他 Web 元素之一发生了变化:这很有可能。
click()
在<input>
上标记不会触发 HTML DOM 上任何 WebElement 的任何更改。 click()
在<button>
上标签或 <a>
标签可以调用 JavaScript 或 Ajax ,而后者又可以删除元素或可以用具有相同 ID
的(新)元素替换(先前的)元素。或其他属性。因此,如果WebDriver抛出StaleElementReferenceException,这意味着即使元素仍然存在,引用也会丢失。我们应该放弃当前的引用,并在它附加到 DOM 时再次定位 WebElement 来替换它。这意味着您必须通过 initElements()
再次重新初始化该类。方法,该方法又重新初始化该页面中定义的所有WebElement。
如果旧元素已被新的相同元素替换,简单的策略是调用 WebDriverWait与 ExpectedConditions 结合使用寻找元素。
您可以在以下位置找到相关的详细讨论:
<小时/>以下是本次讨论的引用资料:
关于selenium - PageFactory 中的 StaleElementReference 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58980326/
我正在尝试学习 PageFactory 模型。我明白当我们做 initElements 的时候,WebElements 位于。例如,我单击一个 web 元素,因此 DOM 中的其他 web 元素之一发
我正在为 ListView 编写 Java Selenium 测试,特别是用于验证然后从 ListView 中选择项目的测试。不过,这让我发疯,因为测试有一半时间运行良好,但另一半时间会给出 Stal
我正在尝试学习PageFactory模型。我理解这样一个事实:当我们执行 initElements 时,WebElements 就被定位了。举例来说,我单击了一个 Web 元素,因此 DOM 中的其他
我正在尝试学习PageFactory模型。我理解这样一个事实:当我们执行 initElements 时,WebElements 就被定位了。举例来说,我单击了一个 Web 元素,因此 DOM 中的其他
我正在尝试学习PageFactory模型。我理解这样一个事实:当我们执行 initElements 时,WebElements 就被定位了。举例来说,我单击了一个 Web 元素,因此 DOM 中的其他
我正在使用 Capybara 2.1 和 Ruby 1.9.3,使用 selenium 驱动程序(带有 Minitest 和测试单元)来测试网络应用程序。 我正在努力解决 StaleElementRe
我有一个相当基本的 react 组件,它呈现一个带有包含数字的跨度的按钮,以及 yadda/mocha 对其进行测试。 有时测试因 StaleElementReference 失败 - 这似乎是在组件
我是一名优秀的程序员,十分优秀!