【发布时间】:2012-06-26 18:31:12
【问题描述】:
我正在使用页面对象模式对我的 Web 应用交互进行建模。 应用程序中的大多数页面都有一些标准选项,例如“登录”、“注销”、“主页”等。 此外,它们都有一个受保护的 WebDriver 引用。
所以我创建了一个 所有 页面都将继承的超超类 - GrandpaClass。这将只包含一个受保护的 WebDriver 引用和一个用于初始化驱动程序的构造函数。
然后,我创建了一个 大多数 页面将继承的超类 - PapaClass。它继承了 GrandpaClass 并添加了我上面列出的标准菜单功能(登录等)
当相同的菜单操作可能导致显示不同的页面时,就会出现问题。例如,当您注销时,您可以转到登录页面,也可以返回错误页面。但是由于登录功能在 PapaClass 中,所以这个类必须返回不同的页面,从他那里继承。这使得超类依赖于它的子类。
我正在考虑使用类似 Strategy 的东西来分解常见的菜单功能。所以 PapaClass 不会维护功能,只会维护对 Menu 对象的引用。
这是个好主意,还是有更优雅(或更简单)的方法来解决这个问题?
谢谢。
【问题讨论】:
标签: java inheritance selenium-webdriver aggregation pageobjects