9

自動化のためにfire foxドライバーの3つのインスタンスを使用しています。現在アクティブなfirefoxブラウザーを前面に表示する必要があります。これは、いくつかの操作にいくつかのroboクラスを使用しているためです。MacでGoogle ChromeのJavaスクリプトアラート(同じ操作)を試してみましたが、うまくいきました。Windows では user32 lib を使用しました。firefox mac の場合、アラートはバックグラウンドで表示されますが、Web ページは前面に表示されません。

((JavascriptExecutor)this.webDriver).executeScript("alert('Test')");
this.webDriver.switchTo().alert().accept();

上記のコードは、Mac で chrome に使用したものです。同じコードが機能しており、Firefox のアラートが表示されていますが、ウィンドウが前面に表示されません。

Firefoxで同じことを行うための他の方法があれば提案してください。

4

5 に答える 5

14

最初にウィンドウ ハンドルを変数に格納し、それを使用して後でウィンドウに戻ります。

//Store the current window handle
String currentWindowHandle = this.webDriver.getWindowHandle();

//run your javascript and alert code
((JavascriptExecutor)this.webDriver).executeScript("alert('Test')"); 
this.webDriver.switchTo().alert().accept();

//Switch back to to the window using the handle saved earlier
this.webDriver.switchTo().window(currentWindowHandle);

さらに、ウィンドウに切り替えた後にウィンドウを最大化することもできます。これにより、ウィンドウもアクティブになります。

this.webDriver.manage().window().maximize();
于 2013-10-03T23:26:57.387 に答える
1

ウィンドウ名を使用して切り替えてみてください:

driver.switchTo().window("windowName");

switchTo().window()または、「ウィンドウ ハンドル」をメソッドに渡すこともできます。これを知っていれば、開いているすべてのウィンドウを次のように繰り返すことができます。

for (String handle : driver.getWindowHandles()) {
  driver.switchTo().window(handle);
}

Selenium ドキュメントに基づく: http://docs.seleniumhq.org/docs/03_webdriver.jsp

于 2013-10-03T21:29:39.617 に答える