2014-02-27 3 views
1

나는 셀레늄 테스트뿐만 아니라 오이 테스트도 처음이다. 단일 브라우저에서 모든 오이 테스트 케이스를 실행할 수 있도록 도와주세요. 지금은 새 WebDriver 오브젝트를 작성 중입니다. 기능 파일에 대한 각 오이 step_def.단일 브라우저에서 모든 오이 기능성 자동화 테스트 케이스를 실행하는 방법

+0

몇 가지 코드를 제공 사용하는 것보다 브라우저 인스턴스를 만들 필요가 어느 곳. – Abs

답변

2

해결 방법은 step_def에서 동일한 웹 드라이버 개체를 사용/전달하는 것입니다. 귀하의 질문에서 나는 여러 Step Def 파일이 있다고 가정합니다. 스토리가 작고 관련된 모든 파일을 단일 step_def 파일에 저장하고 단일 웹 드라이버 오브젝트가있는 경우, 그렇지 않은 경우, 구성 로더에서 전역 적으로 선언 된 사전 정의 된 Driver 오브젝트로 모든 step_def를 호출하십시오.

+0

도움을 주셔서 감사합니다하지만 더 많은 정교한 수있는 하나의 도우미 클래스를 어디에 브라우저를 evoke 메서드를 가지고 정의한 및 step_def 내가 browser.So 그 브라우저를 게이트 수 있도록 해당 브라우저를 정의 할 수있는 해당 메서드를 호출 오전 모든 step_def에서. 그리고 나는 모든 step_def를 하나에 넣을 수 없었다. – user3091180

+0

그럼 훨씬 간단합니다. helper 클래스에 initialize 메서드 (또는 생성자)를 사용하여 드라이버 개체를 인스턴스화합니다. 그런 다음 똑같은 게터를 가져라. 이제 어디서나 게터를 부를 수 있습니다. 유일한 것은, 귀하의 도우미 클래스를 모든 step_def에 공통으로 사용하십시오. 그래도 도움이 필요하면 수업을 더 잘 보여 주어 수정해야 할 부분을 제안 할 수 있습니다. – Karthikeyan

+1

+1 매우 잘 설명 :)! –

1

모든 테스트 케이스를 실행하기 위해 하나의 브라우저를 사용하려면 싱글 톤 디자인 패턴을 사용하십시오. 즉, private 생성자를 사용하여 클래스를 만들고 private 액세스 지정자로 클래스 인스턴스 변수를 정의하십시오. 해당 클래스에서 메소드를 작성하고 클래스가 널인지 아닌지 확인하십시오. if 그것은 클래스의 새로운 인스턴스를 생성하고 메서드 호출에 해당 인스턴스를 반환하는 것보다 null입니다. 예를 들어, 내 코드를 게시하고 있습니다.

class OpenBrowserHelp { 
private WebDriver driver; 
private static OpenBrowserHelp browserHelp; 

private OpenBrowserHelp() { 
    this.driver = new FirefoxDriver() 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    driver.manage().window().maximize(); 
} 

public static OpenBrowserHelp getOpenBrowserHelp() { 
    if (null == browserHelp) { 
     browserHelp = new OpenBrowserHelp(); 
    } 
    return browserHelp; 
} 

WebDriver getDriver() { 
    return driver 
} 

void setDriver(WebDriver driver) { 
    this.driver = driver 
} 

public void printSingleton() { 
    System.out.println("Inside print Singleton"); 
} 

지금, 당신은

WebDriver driver = OpenBrowserHelp.getOpenBrowserHelp().getDriver(); 
관련 문제