1
目前我有以下使用PageFactory初始化我使用的元素的類。Selenium框架中的PageFactory放置
基類:
public class BaseClass {
public static WebDriver driver;
public static boolean bResult;
public BaseClass(WebDriver driver){
BaseClass.driver = driver;
BaseClass.bResult = true;
}}
登錄頁面班組長持有的元素:
public class LoginPage extends BaseClass{
public LoginPage(WebDriver driver)
{
super(driver);
}
@FindBy(how= How.XPATH, using="//input[@placeholder='Username']")
public static WebElement username;
然後我使用一個單獨的登錄類爲我的行爲:
public class Login {
//Login
public static void enterUsernamePassword(String username, String password) throws Exception{
LoginPage.username.sendKeys(username);
LoginPage.password.sendKeys(password);
}
然後我的腳步等級:
@When("^I enter a valid username (.*) and password (.*)")
public void I_enter_a_valid_username_and_password(String username, String password) throws Throwable
{
PageFactory.initElements(driver, LoginPage.class);
Login.enterUsernamePassword(username, password);
}
正如你所看到的,我在Steps類中使用了PageFactory。我討厭這樣做,並希望將PageFactory放在其他地方,而不是在步驟類中。
不添加或刪除任何類,我可以在哪裏放置PageFactory類?任何幫助,將不勝感激。
嗨,請檢查這個鏈接 - http://stackoverflow.com/questions/43727174/where-should-the-page-objects-be-instantiated –
因爲你使用的是黃瓜,你可以使用DI框架要管理實例,請嘗試picocontainer不需要更改代碼,它使用構造函數注入,並使用黃瓜開箱即用。只需在pom中添加依賴項即可。有一個LoginPage和Login類的目的是什麼?將它們組合成一個並刪除webelements的靜態關鍵字。在pageobject的構造函數中使用pagefactory代碼。 – Grasshopper
我已經刪除了額外的類,並將PageFactory放入構造函數中。 –