WebDriver /我可以通过WebDriver识别DOM更改吗?

时间:2014-02-11 11:08:11

标签: selenium xpath

我尝试获取所有已更改的元素。点击元素后。

我尝试着做下一个:

List<WebElement> lstWeb = driver.findElements(By.xpath("//*");
driver.findElement(By.id("ImprBtn"));
List<WebElement> lstWebAfter = driver.findElements(By.xpath("//*");
lstWebAfter.removeAll(lstWeb );

问题在于需要很长时间,因为在每个列表中我都有超过800个Web元素。

点击元素后,有一种有效的方法可以识别DOM中的更改吗?

2 个答案:

答案 0 :(得分:0)

一般来说,我认为设计测试用例并不是很好的方法(比较一些操作之前和之后的整个DOM),可能是因为没有100%正确的案例设计。

更仔细地设计您的测试用例,准备您的预期结果和预期的DOM更改(即Web应用程序的更改),并将它们与实际结果进行比较。

要了解有关推荐的自动化设计的更多信息,请阅读PageObjects模式。 你可以为它找到很好的实现here(不要介意语言,只需阅读代码:))。

如果仍需要解决方案来识别DOM更改,请检查这些解决方案:

  1. Mutation observers
  2. 检查此DOM监控suggestions
  3. 有关mutation events的更多信息(由W3推荐您所寻找的内容)。

答案 1 :(得分:0)

您应该缩小xpath查询范围,以便更有效地搜索DOM。

如果你对原始xath不太满意,我有一个帮助库,你可以根据LINQ-esq语法创建xpath。

分享链接,以防您觉得有用

http://www.unit-testing.net/CurrentArticle/How-to-Create-Xpath-From-Lambda-Expressions.html