9

次の例を使用して、WebDriverテストでウィンドウを最大化し、Firefox 7にアップグレードすると、スクリプトが機能しなくなりました。エラーは発生しません。ウィンドウが最大化されず、他の誰かがこれを見たのか、なぜ機能しなくなったのか、または別の方法でそれを実行したのか疑問に思います。

FireFox7より前に機能していた現在のコード...

public static final String MAXIMIZE_BROWSER_WINDOW = "if (window.screen) {window.moveTo(0, 0);window.resizeTo(window.screen.availWidth,window.screen.availHeight);};";

public static Object maximizeBrowserWindow(WebDriver driver) {
    return executeJavascript(driver, MAXIMIZE_BROWSER_WINDOW);
}

private static Object executeJavascript(WebDriver driver, String script){
    JavascriptExecutor js=(JavascriptExecutor) driver;
return js.executeScript(script);
}
4

5 に答える 5

8

Firefox 7は、JavaScriptを介してメインウィンドウを変更する機能を無効にしました。問題レポートは、Mozillaバグトラッカーにあります。WebDriverユーザーのメーリングリストで回避策についていくつかの議論がありましたが、どれも特にきれいではありません。

于 2011-10-26T15:36:25.003 に答える
4

これは、Firefoxブラウザで行われる方法です(selenium-java-2.25.0 jar以降)。

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
于 2012-08-23T20:06:01.300 に答える
1

これが私がそれをやった方法です。これはうまく機能しますが、ハックのように見えました。

Set<String> handles = driver.getWindowHandles();
String script = "if (window.screen){var win = window.open(window.location); win.moveTo(0,0);win.resizeTo(window.screen.availWidth,window.screen.availHeight);};";
((JavascriptExecutor) driver).executeScript(script);
Set<String> newHandles = driver.getWindowHandles();
newHandles.removeAll(handles);
driver.switchTo().window(newHandles.iterator().next());
于 2012-04-20T13:29:02.210 に答える
1

受け入れられた回答のリンクは解決策を提供していません。これが(Firefox 11でテスト済み)です:

String JS_GET_MAX_WIDTH = 
        "return (window.screen ? window.screen.availWidth : arguments[0]);";
String JS_GET_MAX_HEIGHT = 
        "return (window.screen ? window.screen.availHeight : arguments[0]);";

Toolkit toolkit = Toolkit.getDefaultToolkit();
int width = ((Long) executor().executeScript(
        JS_GET_MAX_WIDTH, 
        (int)toolkit.getScreenSize().getWidth())).intValue();
int height = ((Long) executor().executeScript(
        JS_GET_MAX_HEIGHT, 
        (int)toolkit.getScreenSize().getHeight())).intValue();
org.openqa.selenium.Dimension screenResolution = 
        new org.openqa.selenium.Dimension(width, height);
driver.manage().window().setSize(screenResolution);

JavaScript環境は、ブラウザーの現在のモニターに関連する値を返すため、照会されます。Java Toolkitは、O / Sのプライマリモニターの画面サイズ(必ずしも必要なものではない)を返すため、フォールバックとして使用されます。実際のサイズ変更方法は、WebDriverのウィンドウインターフェイスによって提供されます。

于 2012-04-20T09:21:46.240 に答える
0

WebDriverBackedSeleniumオブジェクトを使用してみましたか?私は常にブラウザウィンドウを最大化するためにセレンオブジェクトを使用しています。

Selenium selenium = new WebDriverBackedSelenium(driver, url);
selenium.windowMaximize();
于 2011-10-25T22:49:20.187 に答える