我应该在基础页面中实例化对象 - Selenium Java

Should I instantiate objects in the Base Page - Selenium Java

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

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

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

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

但是,今天我想使用我放在BasePage 上的常用方法。该方法想要使用也在 BasePage 上的元素。但是,它找不到元素,因为 BasePage 尚未实例化。

那么我可以将以下代码添加到 BasePage 中吗?还是这样做是错误的?

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

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