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