【问题标题】:Selenium, Java, PageObject pattern, broken hierarchySelenium,Java,PageObject 模式,层次结构破坏
【发布时间】:2012-06-26 18:31:12
【问题描述】:

我正在使用页面对象模式对我的 Web 应用交互进行建模。 应用程序中的大多数页面都有一些标准选项,例如“登录”、“注销”、“主页”等。 此外,它们都有一个受保护的 WebDriver 引用。

所以我创建了一个 所有 页面都将继承的超超类 - GrandpaClass。这将只包含一个受保护的 WebDriver 引用和一个用于初始化驱动程序的构造函数。

然后,我创建了一个 大多数 页面将继承的超类 - PapaClass。它继承了 GrandpaClass 并添加了我上面列出的标准菜单功能(登录等)

当相同的菜单操作可能导致显示不同的页面时,就会出现问题。例如,当您注销时,您可以转到登录页面,也可以返回错误页面。但是由于登录功能在 PapaClass 中,所以这个类必须返回不同的页面,从他那里继承。这使得超类依赖于它的子类。

我正在考虑使用类似 Strategy 的东西来分解常见的菜单功能。所以 PapaClass 不会维护功能,只会维护对 Menu 对象的引用。

这是个好主意,还是有更优雅(或更简单)的方法来解决这个问题?

谢谢。

【问题讨论】:

    标签: java inheritance selenium-webdriver aggregation pageobjects


    【解决方案1】:

    我认为您的 Menu 对象是个好主意,但您不需要 PapaClass。您可以让所有页面都继承自 GrandpaClass,并在有共同元素的地方使用 Composition。通过继承,您是在说“是一个带有菜单的页面”,这表明该页面应该只有一个菜单。

    【讨论】:

      【解决方案2】:

      是的,我认为这没问题,如果您需要不同的策略来基于某些内容返回页面。您对问题的描述往往使我相信您使问题过于复杂。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-17
        • 2013-06-16
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多