由于陈旧元素参考而导致的不稳定测试

时间:2016-08-09 09:48:47

标签: javascript selenium protractor

与问题here类似。我的测试不稳定。尝试和捕获解决方案在这里不起作用。有什么最佳实践可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

正如上面的@lauda所说,StaleElementReferenceException清楚地表明,自上次获取对象引用以来,您正在与之交互的页面已经发生了变化。您必须仔细检查代码中这两点之间发生的情况,以确定导致页面重新加载的原因。这将帮助您决定如何在自动化框架的上下文中处理这种情况。

一些建议:

  • 而不是使用@FindBy注释,为元素创建CSS或XPath选择器变量,然后在需要与元素交互的任何地方使用findElementBy在需要与之交互之前获取目标WebElement。 (您可能仍需要等待AJAX​​事件先完成)
  • 重构您的框架代码,以便在获取目标WebElement之前,采取某些操作的方法将等待页面重新加载,或者等待相关的AJAX操作完成(例如,在我的测试系统性能最近下降之后,我发现我的框架代码中需要等待页面上的表重新加载的地方,所以我使用WebDriverWait等待加载微调器在我与表中的项目交互之前消失。)

答案 1 :(得分:0)

可能存在编码问题,您之前搜索元素并稍后使用该对象。

如果页面未更改/重新加载,则不应该使用陈旧元素。