webdriver firefox 7最大化窗口

时间:2011-10-25 20:37:10

标签: java webdriver firefox7

我一直在使用以下示例在我的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);
}

5 个答案:

答案 0 :(得分:8)

Firefox 7禁用了通过JavaScript修改主窗口的功能。 issue report可以在Mozilla bug跟踪器中找到。在WebDriver用户邮件列表中有一些discussions个解决方法,但它们都不是特别漂亮。

答案 1 :(得分:4)

这是Firefox浏览器的完成方式(截至selenium-java-2.25.0 jar):

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();

答案 2 :(得分: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接口提供。

答案 3 :(得分: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());

答案 4 :(得分:0)

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

Selenium selenium = new WebDriverBackedSelenium(driver, url);
selenium.windowMaximize();