如果一个按钮可选地显示在页面(或页面的一部分)上,它是否有资格将该部分表示为两个不同的 PageObjects,其中一个 PageObject 提供与按钮交互的方法,而另一个 PageObject 不提供?或者,它应该是一个页面,其中包含一种方法,该方法可以在未呈现 Button 时抛出异常。
什么是可维护的解决方案 - 因为在未来的版本中,按钮可能会开始出现在这两种情况下,或者功能可能会完全改变。
最佳答案
在这种情况下
the button may start appearing in both cases or the functionality may totally change
可能的解决方案是 - Transporter 设计模式。它基本上是 - 将重复使用的页面对象聚合到一个外部对象中的导航。还根据测试要求将导航控制集中在被测系统中。该对象封装了与被测系统内导航实现相关的逻辑。因此业务逻辑问题不会干扰系统内的导航。
我认为复合页面对象是可以接受的并且
maintainable solution
在这两种情况下。因为它将允许您通过分离可在不同页面上重用的子对象并将它们包含到父对象中,以更“面向对象”的方式构建页面对象。考虑这个例子:
进一步阅读 GUI automation patterns .
关于testing - 创建新型 PageObject 的标准应该是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519085/