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

我应该在基页中实例化对象吗?Selenium Java

常宸
2023-03-14

我正在编写一个Java Selenium测试自动化框架。我正在使用页面对象模型。我有一个基页,它包含可以被扩展基页的所有其他页使用的元素和方法。

到目前为止,我还没有实例化基页。我实例化了所有其他页面,如下所示:

public xxxxxxxxPage() {
    PageFactory.initElements(driver, this);
}

我没有实例化BasePage,因为我认为所有的BasePage元素都是由扩展它的其他页面实例化的。

然而,今天我想用一个常用的方法,我放在了主页上。该方法希望使用一个也在BasePage上的元素。但是,它找不到元素,因为BasePage还没有实例化。

那么我把下面的代码添加到BasePage是可以的还是做错了呢?

public BasePage() {
    PageFactory.initElements(driver, this);
}

共有1个答案

徐帅
2023-03-14

basePage中使用pageFactory.initElements(driver,this);也将启动派生类中的元素,您可以在基类构造函数中使用它并从派生的页面对象中删除它。

 类似资料:
  • 问题内容: 我经常看到这样初始化数组: 但是,阅读《语言基础- 数组》 显示,短语法不需要显式实例化构造函数: 另外,您可以使用快捷方式语法创建和初始化数组: 因此,假设这两种初始化方法: 这些之间有什么区别吗?两者看起来都一样,在这种情况下,我应该假设第二个隐式调用the ,第一个只是更冗长的方式,还是在幕后呢? 从Java开始,如果这太愚蠢了,对不起,但是我在网上找不到关于此的任何信息。 问题

  • 问题内容: 我正在阅读一本有关JUnit的书,作者建议使用tearDown方法使资源无效。为什么?这不是GC的工作吗?它会严重造成伤害吗? 让我们考虑这样的示例: 你怎么看?tearDown中的代码是否必要? 问题答案: 是的,这确实是必要的。 您会看到,JUnit实际上 将为每个测试方法 创建该类的单独实例,而Junit3测试运行程序(对于JUnit4则不是)将保留这些实例,直到整个测试套件完成

  • 问题内容: 我在查看OOP类文档时发现了以下示例: 我发现它们从同一类的主体实例化一个对象令人困惑。这被认为是不良做法吗?新创建的对象会具有main方法吗? 谢谢! 问题答案: 这根本没有错。这是完全正常的。(诚​​然,将具有main方法的类显然可以 执行的 事情更有意义- 类中的方法没有太大意义。) 对象实际上没有方法- 类 具有方法,或者是静态方法(在没有任何特定上下文的情况下调用),而实例方

  • 问题内容: 我是编程的新手,我想知道实例化对象时哪里出错了。下面是代码: 问题答案: 您的代码中没有类。您声明的是私有方法。 使用当前代码段,您需要实例化该类并利用该方法。注意,在这种情况下,您的类定义前面有关键字 class。 但这并没有实际意义,您的方法总是会返回。 您是否正在尝试执行以下操作:

  • 问题内容: 这两种方法有什么优势吗? 范例1: 范例2: 问题答案: 没有区别-实例变量初始化实际上是由编译器放入构造函数中的。 第一种变体更具可读性。 你不能使用第一个变体进行异常处理。 另外还有初始化块,编译器也将其放在构造函数中: 但是,字段声明不是任何方法的一部分,因此它们不能像语句那样执行。相反,Java编译器会自动生成实例字段初始化代码,并将其放入该类的一个或多个构造函数中。初始化代码

  • 问题内容: 当我尝试: 编译器给我一个错误。有什么帮助吗? 另外,如果要初始化队列,是否必须实现队列的方法? 问题答案: A 是一个接口,这意味着您不能直接构造一个。 最好的办法是建立关闭一类已经实现了接口,像下面的一个:,,,,,,,,,或。 一种替代方法是编写您自己的类,该类实现必要的Queue接口。除非在极少数情况下您希望在为程序的其余部分提供的同时做一些特别的事情,否则不需要它。 更少使用