Page Object Class를, Selenium에서 제공하는 Factory
라는 개념으로 새롭게 정의할 수 있습니다.
이중 @FindBy
Annotation을 써서 구현해볼 수 있습니다.
// By username = By.xpath("//*[@id=\'login1\']");
@FindBy(xpath = "//*[@id=\\\'login1\\\']")
WebElement username;
위 comment와 아래는 똑같은 결과입니다. @FindBy
를 사용하면 좀 더 간결해집니다.
FindBy
annotation은 WebElement 요소를 지정된 parameter로 찾게됩니다.
다만, @FindBy
와 같이 Selenium의 Page Factory 기능 (support library) 를 이용하면, 생성자에
PageFactory.initElement
를 해주어야합니다.
public LoginPageFactory(WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver,this);
}
방식은 위와 같이, driver와 클래스를 static method
로 넘겨줍니다.
(그래야 annotation이 동작합니다.)