我正在使用页面对象模式对我的 Web 应用程序交互进行建模。 应用程序中的大多数页面都有一些标准选项,例如“登录”、“注销”、“主页”等。 此外,它们都有 protected WebDriver 引用。
因此,我创建了一个所有页面都会继承的 super 类 - GrandpaClass。这将仅包含 protected WebDriver 引用和用于初始化驱动程序的构造函数。
然后,我创建了一个大多数页面都会继承的父类(super class) - PapaClass。它继承了GrandpaClass并添加了我上面列出的标准菜单功能(登录等)
当相同的菜单操作可能导致显示不同的页面时,就会出现问题。例如,当您注销时,您可以转到登录页面,也可以返回到错误页面。但由于登录功能位于 PapaClass 中,该类必须返回不同的页面,继承自他。这使得父类(super class)依赖于它的子类。
我正在考虑使用诸如策略之类的东西来分解常见的菜单功能。因此,PapaClass 不会维护功能,而只会维护对 Menu 对象的引用。
这是一个好主意,还是有更优雅(或更简单)的方法来解决这个问题?
谢谢。
最佳答案
我认为您的 Menu 对象是个好主意,但您不需要 PapaClass。您可以让所有页面继承 GrandpaClass 并使用 Composition哪里有共同元素。通过继承,您说的是“是一个带有菜单的页面”,这表明该页面应该只有一个菜单。
关于java - Selenium、Java、PageObject 模式、破坏的层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213775/