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)
}
}
}
正如你已經可以看到構造函數可以是抽象的頁面:)