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