私はアプリケーションが実際にブラウザとして扱われるアプリケーション自動化フレームワークを持っています。さて、ここに私の機能があります。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();
}
}