【问题标题】:Self Healing of Selectors in UI AutomationUI自动化中选择器的自我修复
【发布时间】:2019-08-10 01:22:23
【问题描述】:
我在 JS 中进行 UI 自动化,我根据 XPATH 或 CSS 选择器识别对象/元素。由于许多不必要的原因 - 由于 XPATH 在不同环境中的变化,测试失败。
我正在寻找想法或方法 - 我的自动化脚本可以自我修复以识别更改的 XPATH/CSS 选择器并更新或使用更改的选择器运行。
有没有办法 - 我可以在运行时实现这一点,以自我修复我现有的 Javascript 自动化脚本。
【问题讨论】:
标签:
javascript
dom
xpath
css-selectors
automated-tests
【解决方案1】:
首先,自动化 UI 测试本质上需要对导致测试失败的页面更改进行维护。大多数情况下,这些失败是由于更改使现有元素选择器不再按预期工作的结果。我认为没有任何解决方案可以以编程方式更改这些选择器;你可能不得不自己写这个。
在我看来,解决这个问题的最佳方法是
采用定位器策略来唯一标识您的元素,同时尽可能少地依赖 DOM。对我来说,理想的情况是拥有一个独特的 ID 或其他一些独特的标签。就我个人而言,我很少使用 Xpath,因为它最有可能依赖于其他元素,增加了需要维护的测试的可能性和频率,而且它是定位元素的最慢方法。
QA 应该从开发过程的一开始就参与进来,以便他们能够尽早确定需要对自动化测试进行的任何更改,以适应即将推出的功能。此外,QA 可以与开发人员合作建立尽可能“可测试”的产品,通常包括请求 HTML 标签以帮助唯一地识别元素。理想情况下,可以在开发过程中对现有测试进行所需的更改,这样损坏的选择器就不会延迟发布周期。
最后,我认为我们只需要接受一定程度的脆弱性和 UI 自动化所需的维护。 Google 对“不稳定”UI 测试的目标是 1% 或更少。 Selenium 是一个很棒的浏览器自动化工具,但它需要大量的计划和策略来编写可靠、可维护和健壮的 UI 测试。而且我认为在设计测试和定位器策略时考虑哪些更改可能会破坏哪些选择器是必不可少的。自动执行此操作的工具会很棒,我相信有些团队正在努力使用人工智能创建一种方法,但目前还没有公开可用的工具。