我在互聯網上搜索了一下,但認爲我可能通過在stackoverflow上發佈並查看是否有任何意見可以得到一些見解。頁面對象 - 方法的抽象級別
我想知道如果任何人有這是首選設置頁面對象的這兩種方式之間的意見:
public class LoginPage extends PageObject{
public void typeEmail(String email){
driver.findElement(EMAIL_SELECTOR).sendKeys(email);
}
public void typePassword(String pw){
driver.findElement(PASSWORD_SELECTOR).sendKeys(email);
}
public void submit(){
driver.findElement(SUBMIT_SELECTOR).click();
}
}
......還有......
public class LoginPage extends PageObjects{
public void login(String email, String password){
driver.findElement(EMAIL_SELECTOR).sendKeys(email);
driver.findElement(PASSWORD_SELECTOR).sendKeys(email);
driver.findElement(SUBMIT_SELECTOR).click();
}
}
本來,我認爲第二種方式會更好,因爲如果登錄流程由於某種原因而改變(這對於登錄來說不太可能,但是您可以通過其他類型的表單來理論化),那麼您可以更新login()方法和此更改會影響所有需要登錄的測試。
但是,如果您想要在submit()之前驗證錯誤條件或更多事情,則第二種解決方案不夠靈活。
任何見解都會受到歡迎。
第二種解決方案是更多的「頁面對象」。這個想法是他們應該代表你的頁面可以做的**服務。正如在,'登錄'是它可以做的首要服務/動作,在它下面必須輸入用戶名和密碼,然後單擊確定。但是,暴露給公衆來電者只是「登錄」方法。他們不知道「如何登錄」。究竟是什麼不靈活呢? – Arran
另外,後一種方法是頁面對象模式的設計者所期望的。根據他的定義,前一種方法不是頁面對象。 – JimEvans
那麼您怎麼能讓這個方法足夠靈活以便在您提交之前驗證事物?例如,假設你填寫了一個表單,然後你得到了一個預覽,並且你希望能夠驗證該預覽中的不同項目?你不會希望每一個測試都做到這一點,但只是在特定的測試中。 –