簡體   English   中英

webdriver firefox 7最大化窗口

[英]webdriver firefox 7 maximize window

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

Firefox 7禁用了通過JavaScript修改主窗口的功能。 可以在Mozilla錯誤跟蹤器中找到問題報告 在WebDriver用戶郵件列表上已經有一些關於變通方法的討論 ,但它們都不是特別漂亮。

這就是Firefox瀏覽器的工作方式(截至selenium-java-2.25.0 jar):

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

接受的答案中的鏈接不提供解決方案。 這是(在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界面提供。

這是我最終做到這一點,這很好,但似乎是一個黑客。

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());

您是否嘗試過使用WebDriverBackedSelenium對象? 我一直在使用selenium對象來最大化瀏覽器窗口。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM