2016-04-12 16 views
1

私はアプリケーションが実際にブラウザとして扱われるアプリケーション自動化フレームワークを持っています。さて、ここに私の機能があります。Selenium Webdriverで同じセッションを使用してブラウザを開く方法は?

通常、ログインページを常に起動します。私のテストケースでは、まずアプリケーションをクラッシュさせてから、再起動して、今度はログインページを起動するのではなく、「エラーレポート」ページに移動する必要があります。

すべてのコマンドプロンプトウィンドウがセッションであるため、コマンドプロンプトからこれを行うと、この機能は正常に機能します。したがって、基本的には同じセッションでクラッシュして再び開きます。

これは、@BeforeClassが実行されるたびにアプリケーションの新しいインスタンスを作成するため、エラーページに誘導するのではなく、再度ログインページを表示するため、webdriverを実行するときには機能しません。

同じセッションでアプリをクラッシュさせたり再配置したりする方法についてのご意見は、大きな助けになります。私はドライバが呼び出されている場所からコードのほんの一部を提供しています。

protected void setupChromeRemoteDriver(String hubUrl, String platformName) throws IOException { 

     Platform platform = (platformName != null) ? Platform.valueOf(platformName) : Platform.ANY; 

     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setBrowserName("chrome"); 
     capabilities.setPlatform(platform); 
     capabilities.setCapability(CapabilityType.TAKES_SCREENSHOT, true); 

     Set<Cookie> cookies = driver.manage().getCookies(); 
     for(Cookie cookie : cookies){ 
      driver.manage().addCookie(cookie); 
     } 

     driver = new CustomRemoteWebDriver(new URL(hubUrl), capabilities); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(Constants.ELEMENT_TIMEOUT_SECONDS, TimeUnit.SECONDS); 
    } 

CrashApplication.java

public void crashUTAApp(){ 
     String filePath = Constants.CRASHAPP_BATCHFILE_LOCATION; 
     try{ 
      Process process = Runtime.getRuntime().exec(filePath); 
      if(null != process && process.waitFor() == 0 && process.exitValue() == 0){ 
       Reporter.log("App Crashed"); 
      }else{ 
       Reporter.log("Failed to crash app"); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

答えて

0

は、これを達成するための一つの可能​​な回避策は、テスト用のJUnitクラス内@Beforeアノテーションを使用し、その中からCrashApplicationを呼び出すことです。あなたは@BeforeClassで始まって@Beforeの中でクラッシュするドライバをこのようにします。このアプローチを使用する場合は、@Beforeが@Testの前に実行されるため、このシナリオのみをクラス全体に適用する必要があります。構造の シンプルな表現:

(テストクラス)

@BeforeClass(新しいアプリのインスタンスを作成して、インスタンスをwebdriverを呼び出す)

@Before(すべての@Test前に実行のための前提条件としてCrashApplicationを呼び出します実際の@Test)

@Test(同じセッションを使用して実行され、ログイン画面にナビゲート)

関連する問題