微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何维护 HTML 定位器以实现自动化

如何解决如何维护 HTML 定位器以实现自动化

ui 自动化失败的主要原因之一是需要不断更新的定位器更改。什么是维护定位器的最佳方法,这样我就不必在每次定位器更改时更新测试自动代码

解决方法

最佳实践是使用页面对象模型。这个想法的核心是站点上的每个页面都由测试项目中的一个类表示。该页面的所有定位器都应位于该类中。用户可能在该页面上执行的所有操作都将由该类中的方法表示。因此,当该页面在站点上更新时,您确切地知道去哪里进行更改……相应的类。

如果您的每个测试都包含定位器,则页面重新设计涉及搜索接触该页面的每个测试并更新定位器。如果您使用页面对象模型并且重新设计了页面,则打开该页面的类,更新定位器,然后就完成了。使用页面对象模型时,方法 #1 可能需要花费数小时的工作时间……而且您不会错误地错过更新测试。

一些参考资料
Page object models from selenium.dev
Using Page Objects to Organize Tests from protractortest.org

我还想知道您是否正在创建次优定位器,这是否导致您必须比应有的更频繁地更新定位器。如果对页面的微小更改迫使您更新未直接受更新影响的元素的定位器,那么您可能使用的是从工具复制的 XPath,而不是手工制作的 XPath。这可能会导致大量不必要的定位器更新。如果是这种情况,我会建议大量阅读。阅读大量关于如何创建良好定位器的文章。在大多数情况下避免使用 XPath 定位器。查找具有 ID、名称等的元素并使用它们。学习如何编写 CSS 选择器...网络上有很多关于该主题的好文章。 Selenium 贡献者通常避免使用 XPath。它们更慢,语法更复杂和冗长,支持不如 CSS 选择器。一般来说,XPath 应该只在必要时使用……当您必须通过包含的文本定位元素或执行一些复杂的 DOM 遍历时。

如果您能掌握这两点,您的自动化将更清晰、更易于阅读且更易于维护……并且需要更少的维护。

,

阅读此What is the Page Object Pattern in Selenium WebDriver?

Page ObjectsPageFactory 在 Selenuim Wiki 上。

Selenium 官方网站上的第 Object Design Pattern 页。

还有其他方法,但这些方法是很长一段时间以来最常见的方法。

,

每个人都提到了页面对象模型,但是如果定位器频繁更改,那并不能解决问题。您仍然需要对每个对象进行 fo 并更新定位器

我会在应用程序方面寻找解决方案。例如,要求开发人员添加不属于 css 但可以被自动化使用的独特属性。您可以随意调用它们,例如 test-id,然后您甚至可以声明自己的 locator strategy in protractor,让您的生活更简单

如果您需要更多信息查找protractor data hooks

,
  1. 为每个 ui 创建一个通用的 locator.json 文件,该文件提供在 ui 上执行操作所需的定位器,并且是 ui 资产的一部分,可以通过使用域和路径直接访问文件来加载
  2. 在 ui 应用程序中编写单元/e2e 测试以使用上述定位器,以便在部署更改之前始终有效
  3. 当定位器更改时,只有这些测试需要更新,而您实际的端到端验证测试不需要更新。

通过使用这种方法,团队无需担心定位器的更改,并且可以依靠此文件在每个环境中提供更新的定位器。 它可以用于任何需要定位器的自动化脚本。 跨应用 ui 自动化执行变得更可靠并避免漏报。

示例定位器 json 文件: http://www.myappquality.com/asset/locators.json

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。