2017-12-11 27 views
-1

누군가 cucumber-jvm이있는 sharedDriver 예제가 있습니까? SharedDriver는 Ashlak에 의해 설명 된대로 구현되었지만 페이지 개체와 단계간에 드라이버를 공유하고 공유 할 수 있습니까?Cucumber-jvm shared 드라이버 예제

공유 드라이버 클래스 :

public class SharedDriver extends EventFiringWebDriver { 
    private static final WebDriver REAL_DRIVER = WebDriverFactory.create(); 

    private static final Thread CLOSE_THREAD = new Thread() { 
     @Override 
     public void run() { 
      REAL_DRIVER.quit(); 
     } 
    }; 

    static { 
     Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); 
    } 

    public SharedDriver() { 
     super(REAL_DRIVER); 
    } 

    @Override 
    public void quit() { 
     if (Thread.currentThread() != CLOSE_THREAD) { 
      throw new UnsupportedOperationException("You shouldn't quit this WebDriver. It's shared and will quit when the JVM exits."); 
     } 
     super.quit(); 
    } 

    @Before 
    public void deleteAllCookies() { 
     manage().deleteAllCookies(); 
    } 

    @After 
    public void embedScreenshot(Scenario scenario) { 
     try { 
      byte[] screenshot = getScreenshotAs(OutputType.BYTES); 
      scenario.embed(screenshot, "image/png"); 
     } catch (WebDriverException somePlatformsDontSupportScreenshots) { 
      System.err.println(somePlatformsDontSupportScreenshots.getMessage()); 
     } 
    } 
} 

나는 LoginPage, 단계 클래스를 등록 페이지가있는 경우는, 어떻게이 sharedDriver를 사용해야합니까?

감사합니다.

+0

[ask], 특히 [mcve] (MCVE)에 대한 부분과 [연구 노력이 얼마나 필요합니까?] (https://meta.stackoverflow.com/questions/261592/how-much-research)를 읽어보십시오. -effort-of-stack-overflow-users) 이것은 자신의 프로그램을 디버그하고 스스로 문제를 해결하는 데 도움이 될 것입니다. 그렇게하고 아직도 갇혀 있다면 MCVE를 게시하고, 시도한 내용과, 오류 메시지를 포함한 실행 결과를 게시하여 더 잘 도와 드릴 수 있습니다. 또한 해당 페이지 및/또는 관련 HTML에 대한 링크를 제공하십시오. – JeffC

+0

@brobee 공유 상태 및 개체 생성을위한 종속성 주입을 살펴 봐야합니다. Picocontainer는 가장 간섭이 적으며 생성자 주입을 사용합니다. Cucmber는 이미 그것에 대한 레디 메이드 지원을하고 있습니다. 이 http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer에 다시 회신하십시오. shareddriver 객체를 pageobject 생성자에 전달하면 pico에 의해 생성되고 전달됩니다. 동일한 드라이버 인스턴스가 동일한 sceanario에서 호출되는 유사한 생성자가있는 다른 page 객체로 전달됩니다. – Grasshopper

답변

1

내 질문에 답변 해 드리겠습니다.

SharedDriver 클래스 (위 참조)가 좋으며, 오이 피코 용기를 구성하고 WebDriver 드라이버 대신 SharedDriver를 사용하고이 드라이버로 페이지 객체를 인스턴스화하는 것만 가능합니다. 작업은 picocontainer에서 처리합니다.