FindByアノテーションを使うことで、こんな長いコードが
public void setUserName(String username) { driver.findElement(By.id("MainContent_txtUserName")).sendKeys(username); } public void setPassword(String password) { driver.findElement(By.id("MainContent_txtPassword")).sendKeys(password); } public void clickSubmit() { driver.findElement(By.id("MainContent_btnLogin")).click(); }
こういう風にスッキリになります。
// Define web elements at class level @FindBy(id="MainContent_txtUserName") private WebElement usernameField; @FindBy(id="MainContent_txtPassword") private WebElement passwordField; @FindBy(id="MainContent_btnLogin") private WebElement submitButton;
これを使う時忘れちゃダメなのは、 コンストラクターとかの中で、必ずinitElementをやらせる必要があります。
public LoginPageFactory(WebDriver driver) { this.driver = driver; // Quick start to set values PageFactory.initElements(driver, this); }