0

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

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

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

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

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

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

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

4

2 回答 2

1

我不确定问题是否已解决,如果未解决,您可以试试这个..

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

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

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

于 2013-10-01T13:49:58.117 回答
0

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

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

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

于 2013-09-06T21:09:04.533 回答