2012-10-01 4 views
0

이 PageObjects/Pagefactory 내 시도 구현 이해 Webdriver에 적용되는으로 적용 할 수있는 방법으로 자바 Webdriver/PageObjects/Pagefactory 구현할 수있는 방법 :나는 일반적으로 다음

1. Create the following structure in eclipse 

--> com.example.qa.pageobjects 
    --> LoginPage.java 

Every class in this package has something like: 

@FindBy(how = How.NAME, using = "logonName") 
    private WebElement logonNameField; 

and the Methods, call Webelement, and call methods on them, like: 

logonNameField.sendKeys("username"); 

Which are called from ScenrioTests. 

    --> HomePage.java (i go there after i login) 
    --> Page.java (abstract) 

--> com.example.qa.setup 
    --> Browser.java 
    --> FirefoxBrowser.java (Code specific to FFox) 
    --> ChromeBrowser.java (Code Specific to Chrome) 

--> com.example.qa.test 
    --> Scenario1234.java 
    --> Scenario2345.java 

이 시나리오 클래스는 PageObjects의 인스턴스 , 및 호출 메소드가 있으며, 브라우저 설정은 테스트 당 한 번만 호출됩니다.

이제 질문은 :

  1. 나는 다음과 같은 방법을 선언하고 Pagefactory 전화를해야할까요?

공공 마이 페이지 방법() { 전화 등 로그인() 반환 PageFactory.initElements (드라이버, MDNSLoginPage.class) 같은 방법; }

  1. 또는, 내가

  2. 내 이해/구현이 정확 기본 생성자에서 같은 PageFactory 전화해야할까요?

답변

0

나는 당신의 1 번 접근 방식을 따르고 있다고 생각합니다. 내 구현을 설명하여 대답하려고하지만 당신의 목적에 유용할지 여부를 확신하지 못합니다. 테스트 클래스에서 사용할 수있는 일반적인 메소드로로드하는 baseTest 클래스가 있습니다. 나는 다음과 같은 방식으로 사용 추상 클래스를 상속 내 테스트 클래스에,

abstract class TestBase { 
//somewhere 
protected static LoginPage goToLoginPage(){ 
    driver.get(loginPage); 
    return PageFactory.initElements(driver, LoginPage.class); 
} 

protected static void startBrowser(Browser browser){} 
    //implemntation 
    } 

다음 (예. 브라우저를 열고 로그인 페이지 등의 인스턴스)

@BeforeClass 
public static void setup(){ 
    //use a common method to start browser  
    startBrowser(Browser.FIREFOX); 
    } 

@Test 
public void canLogInToHomePage(){ 
//start my test like this 
LoginPage loginPage =goToLoginPage(); 

}