【问题标题】:WebDriver / Can I identify DOM changes by WebDriver?WebDriver / 我可以通过 WebDriver 识别 DOM 更改吗?
【发布时间】:2018-11-06 22:35:37
【问题描述】:

单击元素后,我试图获取所有已更改的元素。

我尝试做下一个:

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

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

点击元素后,有一种有效的方法来识别 DOM 的变化吗?

【问题讨论】:

    标签: selenium xpath


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我创建了页面生成器。为此,我想获取所有改变我的 DOM 并对其产生影响的元素。我使用 WebDriver 扫描所有这些元素。
    • 这就是你在 q 中所说的,我明白了 :) 这是一个不好的做法。请仔细阅读我的回答。
    【解决方案2】:

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

    如果您对原始 xath 不太满意,我有一个帮助程序库,可让您基于 LINQ-esq 语法创建 xpath。

    如果您觉得有用,请分享链接

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

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多