我尝试过剧作家页面对象文档和几个youtube视频关于这个主题。我也读过GitHub问题(github页面对象问题),但当有不止一个页面对象类时,仍然存在实现页面对象模型的问题。我理解一个简单的类和测试文件,但是如果有人能帮助我,当我想在另一个页面类中实例化一个页面类或者继承它时,那将是非常感激的。我想在特定方法之外的另一个类中实例化一个页面类,这样我就可以在多个方法中使用该实例。我希望有一个样板为Playwright/测试与打字,不只是基本的一个类,一个测试运行文件。任何帮助将不胜感激。
我的代码示例:
export class LoginPage{
page: Page
/**
*
*/
constructor(page: Page) {
this.page = page;
}
public readonly logInButton ='text=Log in';
public async clickLoginButton() {
await this.page.click(this.logInButton);
}
}
export class AnotherPage{
page: Page
/**
*
*/
constructor(page: Page) {
this.page = page;
}
login = new Login(this.page); // This does not work as Property 'page' is used before its initialization
public async anotherPageMethod(): Promise<void> {
const login = new Login(this.page); // This works but this limits the scope of login to only one method. And I have to repeat this if I have mutiple methods using login.
await login.clickLogin();
}
}
您必须将所有页面对象初始化移动到构造函数
。
在你的情况下,你会有这样的东西:
export class AnotherPage {
page: Page
// add loginPage property
loginPage: Login
constructor(page: Page) {
this.page = page;
// initialize login page object
this.loginPage = new Login(page)
}
public async anotherPageMethod(): Promise<void> {
// loginPage accessible here
await this.login.clickLogin();
}
public async oneMoreAnotherPageMethod(): Promise<void> {
// loginPage accessible here too
await this.login.clickLogin();
}
}
是否可以定义一个禁用Javascript的浏览器来模拟爬虫如何查看页面?应该有一个选项可以通过。
我正在写一个测试来注册我网站上的用户。使用@playright/test,我在playright中定义了几个不同的项目。配置。ts: 我的测试如下所示: 但是,当我运行此测试时,它只对第一个工作人员有效,因为您只能注册一次电子邮件地址。 因此,我想做的是在我的测试中访问项目名称(例如,),以便我可以将其转换为电子邮件地址,以便每次运行测试时,它都会根据项目名称注册用户。 如何在剧作家测试中获得项目
我想通过剧作家选择一个选项,但我不能选择一个选项。什么是错的? 梅 测试
如何与剧作家一起下载文件? 我知道这个问题,如何与剧作家一起下载?但该示例代码不起作用。使用最新发布的剧作家,浏览器实例上没有“pageTarget”功能:
我有一个while循环,它运行一些代码,而selector是隐藏的,即。 如何在这里添加超时,使//do在运行前延迟? 我想这样做,因为我发现代码运行太快,无法找到选择器。。。
这是我第一次使用剧作家,我不知道如何等待请求和验证响应。我已经使用cypress很长时间了,管理网络请求非常容易。例如,我需要在单击按钮后验证响应,这就是我使用cypress的方法: 这就是我试图对剧作家做同样的事情的方式,但是它验证了早在点击保存按钮之前就发送的请求。我不知道如何正确管理这个请求,这是我的测试套件的一个停止: 任何帮助或建议都将不胜感激