javascript - UI 自动化中选择器的 self 修复

标签 javascript dom xpath css-selectors automated-tests

我正在 JS 中进行 UI 自动化,其中我基于 XPATH 或 CSS 选择器识别对象/元素。由于许多不必要的原因 - 由于不同环境中 XPATH 的更改,测试失败。

我正在寻找想法或方法 - 我的自动化脚本可以 self 修复以识别更改后的 XPATH/CSS 选择器并更新或使用更改后的选择器运行。

有没有办法 - 我可以在运行时实现这一点,以 self 修复我现有的 Javascript 自动化脚本。

最佳答案

首先,自动化 UI 测试本质上需要对导致测试失败的页面更改进行维护。大多数情况下,这些失败是由于更改导致现有元素选择器不再按预期工作而导致的。我认为没有任何解决方案可以以编程方式更改这些选择器;你可能必须自己写这个。

在我看来,解决这个问题的最佳方法是

  1. 采用定位器策略来唯一标识您的元素,同时尽可能少地依赖 DOM。对我来说,理想的是拥有一个唯一的 ID 或其他一些唯一的标签。就我个人而言,我很少使用 Xpath,因为它最有可能依赖于其他元素,增加了需要维护的测试的可能性和频率,并且它是定位元素的最慢方法。

  2. QA 应从开发过程的一开始就参与其中,以便他们能够尽早确定需要对自动化测试进行的任何更改,以适应即将推出的功能。此外,QA 可以与开发人员合作,尽可能建立最“可测试”的产品,通常包括对 HTML 标签的请求,以帮助唯一地识别元素。理想情况下,可以在开发时对现有测试进行所需的更改,这样损坏的选择器就不会延迟发布周期。

  3. 最后,我认为我们只需要接受一定程度的不稳定以及 UI 自动化所需的维护。 Google 对“不稳定”UI 测试的目标是 1% 或更少。 Selenium 是一个很棒的浏览器自动化工具,但需要大量的规划和策略才能编写可靠、可维护且健壮的 UI 测试。我认为在设计测试和定位器策略时,考虑哪些更改可能会破坏哪些选择器至关重要。如果有一个工具能够自动执行此操作,那就太棒了,我相信有些团队正在致力于创建一种利用人工智能来实现此目的的方法,但目前还没有任何公开可用的方法。

关于javascript - UI 自动化中选择器的 self 修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55242301/

相关文章:

Javascript函数参数到String

javascript - ngclass 表达式,是数组中的值

javascript - 通过对 Flask 的函数调用更新值

javascript - node-red 使用仪表板节点显示 mysql 结果

Selenium: Selenium 如何识别可见或不可见的元素?是否有可能它已加载到 DOM 中但未渲染到 UI 上?

javascript - 在指令中调用 $compile($element)($scope) 的目的是什么

reactjs - 实现 ReactDOM.createPortal 时出现问题(React 16 功能)

javascript - Xpath 使用包含

java - 使用 Java 从 MediaWiki 读取 XML 标签

c# - XPath 选择具有特定属性值的元素?