9

我一直在使用以下示例在我的 WebDriver 测试中最大化我的窗口,我升级到 Firefox 7,并且脚本停止工作。我没有收到错误,窗口只是没有最大化,想知道是否有其他人看到过这个或者知道它为什么不再工作,或者其他方式来做到这一点..

我当前在 FireFox 7 之前工作的代码...

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

已接受答案中的链接未提供解决方案。这是(在 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 主监视器的屏幕大小(不一定是您想要的)。实际的 resize 方法由 WebDriver 的Window接口提供。

于 2012-04-20T09:21:46.240 回答
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 回答
0

您是否尝试过使用 WebDriverBackedSelenium 对象?我一直在使用 selenium 对象来最大化浏览器窗口。

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