0

我想在我的页面对象中使用 Playwright 的定位器。我找到了一个Javascript 示例(为简洁起见):

import { Page } from '@playwright/test';

export class TodoPage {
  listItems = this.page.locator('.todo-list li');

  constructor(public readonly page: Page) { }
}

尝试在我的 Java 代码中做同样的事情:

public class LoginPage {

    private Page page;

    private Locator loginButton = this.page.locator("#loginButton");

    public LoginPage(Page page){
        this.page = page;
    }
}

初始化时抛出空指针异常,因为page尚未启动loginButton

我可以

private Locator loginButton;

public LoginPage(Page page){
    this.page = page;

    loginButton =  this.page.locator("#loginButton");
}

但这对于大页面对象类来说会变得有点冗长/混乱。

关于如何在 Java 中做到这一点的任何想法?

谢谢!

4

2 回答 2

0

我可以创建一个定位器类:

public class LoginPageLocators {

    public Locator LoginButton;

    public LoginPageLocators(Page page) {
        LoginButton = page.locator("#loginButton");
    }
}

然后通过 eg 访问页面对象类中的定位器locators.LoginButton.click()

它不会避免笨拙/混乱,但至少将它从页面对象类中隐藏起来。

于 2022-01-10T14:16:41.547 回答
0

您可以将 Locator 定义放在构造函数中:

public class LoginPage {

    private Page page;
    private Locator loginButton;

    public LoginPage(Page page){
        this.page = page;
        this.loginButton = this.page.locator("#loginButton");
    }
}
于 2022-02-11T11:35:56.827 回答