2014-04-25 2 views
0

스크립트를 실행하기 위해 Pageobjects를 사용하고 있습니다. 하나는 Pageobject 정의를위한 것이고 다른 하나는 TestNGclasses를위한 것입니다. 패키지 1에 3 개의 클래스가 있다면 패키지 2에 3 개의 테스트 클래스가 있습니다.Selenium Webdriver - TestNG - Null 포인터 예외

은 지금부터 나는 패키지-2 I 패키지-2 다음에 LoginTest.java에서 드라이버를 선언

에서 동일한 용 패키지-1 테스트 클래스 2 개 클래스 (로그인 홈)가;

public static WebDriver driver = new FirefoxDriver();  

@BeforeMethod 
public void Setup(){ 

    driver.get(StringUrl); 
    driver.manage().window().maximize(); 
} 

지금 HomeTest.java를 호출하면 Null 포인터 예외가 표시됩니다. 한번 webdriver를 선언하고 인스턴스를 여러 테스트 클래스로 사용하려면 어떻게해야합니까?

public class searchPOTest { 
private WebDriver driver; 

public void HomePOTest(WebDriver driver){ 

    this.driver = driver; 
} 

@Test(priority=1) 
public void testvalidsearchnInputs() throws Exception { 
    //homePagePO.doaSearch("Google"); 
    homePagePO homeTosearch = PageFactory.initElements(driver, homePagePO.class); 
    searchResultPO toSearch = homeTosearch.search("Google"); 
} 

답변

0

클래스를 확장하면됩니다. 당신은 물론 생성자 대신 @Before 방법을 넣을 수

class AutomationTest { 
    public AutomationTest() { 
    driver = new Driver(); 
    } 
} 


class MyTest extends AutomationTest { 
    @Test 
    public void doThis() { 
    driver.findElement... // driver will not be null now. 
    } 
} 

예를 들어, 셀레늄 프레임 워크 found here ..

이 같은 설정이있다.

+0

여기에 질문이 있는데, 여러 개의 테스트 클래스가 있다면 어떻게됩니까? 어떻게 확장합니까? MyTest 클래스를 자동화하면 새 브라우저 창이 열릴 때마다 AutomationTest가 확장됩니다. – user3573671

+0

정확하게 도와주세요. 테스트가 독립적이며 빠르다는 것을 확인하려면 매번 자신의 브라우저를 열어야합니다. – sircapsalot

+0

사실, 로그인 -> 검색 -> 검색 결과 -> 로그 아웃 등과 같은 지속적인 흐름이 있습니다. 하나의 브라우저 세션에서만 모든 작업을 수행해야합니다. – user3573671