我正在尝试在页面对象模型上使用EventFiringWebdriver。如何实现这一目标,因为pageFactory.initelements()方法仅将Web驱动器实例(而不是eventfiringwebdriver实例)。铸造EventFiringWebdriver到WebDriver在这里不起作用。
只需按照原理来实现自己的页面对象。您会发现从案例到公司(公司到公司)有很多不同的事情,而且"一件尺寸适合所有人"。
使用与页面工厂相同的示例,我会做类似(非常伪代码)的事情:
class Home {
construct(WebDriver ) {
this.webdriver = WebDriver
}
fillSearch(text) {
webdriver.findById('x').send_keys(text);
}
submit(isValid) {
if (isValid) {
return new ResultsPage(this.webdriver);
} else {
return self(this.webdriver)
}
}
}
根据您的测试,您可能还必须在构造函数中注入一个"上下文" - 对于"多态"页面,这些页面具有不同的行为,具体取决于...上下文。
即。"登录"第一次可能会带您进入" Tour"页面,但之后到了"仪表板",因此您可能有类似的东西:
class Login {
construct(WebDriver, context ) {
this.webdriver = WebDriver
}
fillUsername(text) {
webdriver.findById('username').send_keys(text)
}
fillPassword(text) {
webdriver.findById('password').send_keys(text)
}
submit(isValid) {
if (isValid) {
if (context.isFirstTimeLogin) {
return new Tutorial(this.webdriver, context)
} else {
return new Dashboard(this.webdriver, context)
}
} else {
return self(this.webdriver)
}
}
}
您已经看到构造函数可以是一个抽象页面:)