gpt4 book ai didi

java - 如何以页面对象模式管理公共(public)页面

转载 作者:行者123 更新时间:2023-12-02 08:56:56 24 4
gpt4 key购买 nike

使用页面对象模式,我为每个页面创建一个类。然后我意识到有些页面有类似的CSS类,我重复了太多代码。例子:BasePage = 所有页面继承自他(驱动程序和等待设置的地方)Page1、Page2、Page3 = 它们都具有相似的属性,因此我将它们分组到一个名为普通页面

利用 commonPage 中 pageObjetcs 的良好实践,我分为其他 3 个页面(这样它们可以保持更小):CommonPage_HeaderCommonPage_MenuCommonPage_List.

问题是,例如,page1 不能继承CommonPage_Header、CommonPage_Menu 和CommonPage_Header。我该如何应对这种情况?我已经尝试过使用抽象类和接口(interface)。

我需要的是每个页面都继承自 commonPage_HeadercommonPage_MenucommonPage_List 及其任何特定属性

注意:其中一些“特定属性”是带有主体的方法,这就是我不打算使用接口(interface)的原因

public class BasePage(){
//browsers and timeouts
}

public abstract class CommonPage_Header extends BasePage {
public PanelHeader(WebDriver driver) {
super(driver);
}
//similar methods
}

public class Page1 extends CommonPage_Header {
//overwriting some methods of CommonPage_Header, but setting some specification for the page 1
//The problem: I need to use methods of CommonPage_Menu and CommonPage_List too :(
}```

最佳答案

为什么要继承?

使用is-ahas-a关系,避免继承,使用组合。将标题、菜单视为组件,并使用继承将它们注入(inject)到页面对象中。

例如,我不会在 ui 建议的每个页面对象中放置标题、菜单。

为什么不使用一个包含这些通用组件的通用页面对象,而不是将它们放在所有页面对象中?
使用易于理解的结构,首先思考高层次>定义>重构。

关于java - 如何以页面对象模式管理公共(public)页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com