【问题标题】:Maintaining consistency between Application UI and UI locators in WebDriver tests在 WebDriver 测试中保持应用程序 UI 和 UI 定位器之间的一致性
【发布时间】:2013-10-01 21:49:58
【问题描述】:

在编写 UI 自动化测试时,我遇到了我们大多数人都面临的一个常见问题:
自动化测试与 AUT 的强耦合。

如果增强功能改变了 UI一个模块,你必须花很多时间去改变:
1. 测试模块的代码(逻辑)。
2. 或者只是一个元素的定位器。

如果 UI 的变化最小,可以手动替换测试中的定位器。但是,如果考虑到最后期限和时间限制,更改非常大,则不可能这样做。

我正在尝试找出一种实现工具/实用程序的方法,该工具/实用程序将节省我的时间,无需更改存储在定位器地图中的网络应用程序中任何元素的定位器。 例如: 我的定位器地图中有一个搜索结果列表的定位器:

searchResultsLocator=span[id="searchResults"] > ul > li[class="ui-menu-item"] > a

如果开发人员通过将跨度替换为 div 作为某个补丁的一部分来更改此设置,那么我希望它在我的定位器地图中自动更新。

有人解决过这个问题吗?有人可以提出一些建议吗?

【问题讨论】:

    标签: webdriver selenium-webdriver automated-tests ui-automation


    【解决方案1】:

    我不确定问题是否解决了,如果没有解决你可以试试这个..

    我面临同样的问题很好,但没有更多。 创建一个保存所有元素引用的文件(如果没有 ID,则可以使用 XPath),然后使用从该文件中获取值的变量,而不是对其进行硬编码。

    不要为整个应用程序创建单个文件,请确保您在单个文件中包含相关元素(例如单个页面的元素)。

    因此,当 UI 发生变化时,您将只有一个地方可以编辑,而不是整个测试代码。

    【讨论】:

    • 我没有维护定位器值的问题。我已经很好地运行了它。我制作了一个 .properties 文件,其中包含一个位置中的所有定位器。我创建了所有定位器(名称值)的单个哈希图,并将哈希图传递给页面对象。然后,我可以随时从哈希图中获取定位器。我的问题不一样。这是为了保持开发人员在应用中所做的 UI 更改与我正在使用的定位器之间的一致性。
    【解决方案2】:

    您可以为每个元素使用多个/备份定位器。在这里查看我的问题:Pros/cons for using multiple locators per element in Selenium?

    这不会自动为您更新定位器,但我担心尝试这样做可能会错误地更新它们。然后你可能会得到一种误报——测试通过,因为它们自动更新到新的定位器,但是定位器是错误的元素!

    但是,预定义多个定位器可以让您的测试在一个定位器失败时继续顺利运行,但您可以生成有关失败的报告/通知,然后仍有时间手动更新定位器,只要这些备份中至少有一个继续工作。

    【讨论】:

    • 解决这个问题的好方法。但是我的问题与您在问题中提到的不完全相同。如果一种策略(例如 xpath)不起作用,那么您的解决方案很有用,然后尝试另一种策略(css 选择器)。但对我来说,这是关于 DOM 中元素结构的变化。
    • 编辑上面的评论:当不确定元素是否肯定有ID时,这是关于DOM中元素结构的变化。即使对于像复选框被更改为单选按钮并且它没有 ID 的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2022-12-23
    • 2023-01-21
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    相关资源
    最近更新 更多