当前位置: 首页 > 知识库问答 >
问题:

如何在page object模式下管理公共页面

乌修筠
2023-03-14

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

我需要的是每个页面继承commonPage_Header、commonPage_Menu和commonPage_List及其任何特定属性

注意:有些“特殊属性”是带有主体的方法,这就是为什么我不打算使用接口的原因

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 :(
}```

共有1个答案

柴衡
2023-03-14

为什么要继承?

投入使用是-a有-a关系,避免继承,使用组合。将header和menu视为组件,并使用继承将它们注入到page对象中。

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

 类似资料:
  • 最近我正在开发一些针对storm拓扑的计时工具,但是对于storm集群中的数据共享,我还是有一些疑问: > 如果一个组件(spout/bolt)为每个工作者配置了多个执行器,假设工作者号为1,组件的parallelism_hint为3,任务号使用默认设置(即1),是否意味着该组件在工作者中有3个实例?如果不是,是否应该在同步块中使用组件的字段? 如果在组件中(或方法内)创建了一个名为“athrea

  • Postgres 9.1数据库包含表yksus1。。公共模式中的ykssu9。pgAdmin在下面的代码中显示了这些定义。如何将这些表移动到firma1模式? firma1模式中的其他表具有对这些表的外键引用。对这些表的外键引用仅来自firma1模式中的表。 其中一些表包含数据。如果表移动到firma1模式,外键引用也应更新到firma1。YKSUS表格。无法更改表结构。 看起来主键序列已经在fi

  • 2.5 ABP公共结构 - 设置管理 2.5.1 简介 每个应用程序需要存储一些设置并在应用程序的某个地方使用这些设置。ABP框架提供强大的基础架构,我们可以在服务端或者客户端设置,来存储/获取应用程序、 租户和用户级别的配置。 设置通常是存储在数据库(或另一个来源)中,用名称-值(name-value)字符串对应的结构来表示。我们可以把非字符串值转换成字符串值来存储。 注意:关于ISetting

  • 2.4 ABP公共结构 - 日志管理 2.4.1 服务器端 ABP使用Castle Windsor’s logging facility日志记录工具,并且可以使用不同的日志类库,比如:Log4Net, NLog, Serilog… 等等。对于所有的日志类库,Castle提供了一个通用的接口来实现,我们可以很方便的处理各种特殊的日志库,而且当业务需要的时候,很容易替换日志组件。 译者注:Castl

  • 2.3 ABP公共结构 - 缓存管理 2.3.1 简介 ABP给出了一个抽象缓存基类。并在内部使用了该抽象基类。使用 MemoryCache.aspx?f=255&MSPPError=-2147217396) 来实现了该抽象基类。它能够被任何其它的缓存类来扩展。Abp.RedisCache 包就扩展了该缓存基类。 2.3.2 ICacheMananger ABP对外提供了一个缓存接口ICacheM

  • 2.2 ABP公共结构 - 会话管理 2.2.1 简介 ABP提供了 IAbpSession 接口获取当前用户以及租户信息,而不是使用ASP.NET的Session。IAbpSession也被集成且使用在ABP其他模块中,例如:设置管理,权限认证。 2.2.2 注入会话 IAbpSession通常是以属性注入的方式存在于需要它的类中,不需要获取会话信息的类中则不需要它。如果我们使用属性注入方式,我