1
我想在页面对象模型上使用EventFiringWebDriver。这是如何实现的,因为PageFactory.initElements()方法只采用WebDriver实例而不采用EventFiringWebDriver实例。将EventFiringWebDriver投射到WebDriver在此不起作用。EventFiringWebDriver如何在页面对象模型中使用
我想在页面对象模型上使用EventFiringWebDriver。这是如何实现的,因为PageFactory.initElements()方法只采用WebDriver实例而不采用EventFiringWebDriver实例。将EventFiringWebDriver投射到WebDriver在此不起作用。EventFiringWebDriver如何在页面对象模型中使用
只需按照原则实现您自己的页面对象。你会发现有很多事情不同,从案件到案件(公司到公司),没有“一刀切”的事情。
使用相同的例子page factory我会做这样的事情(很伪代码):
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)
}
}
}
取决于你测试你可能也必须注入在构造一个“语境” - 对'多态“页面具有不同的行为,具体取决于...上下文。
I.e. “伐木”,第一次可能会带你到一个“游”的页面,但自那以后,“仪表盘”,所以你可能有类似:
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)
}
}
}
正如你已经可以看到构造函数可以是抽象的页面:)