webdriver firefox 7 увеличить окно - PullRequest
       19

webdriver firefox 7 увеличить окно

9 голосов
/ 26 октября 2011

Я использовал следующий пример, чтобы максимизировать свои окна в моих тестах 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 ]

8 голосов
/ 26 октября 2011

Firefox 7 отключил возможность изменять главное окно через JavaScript.Отчет о проблеме можно найти в баг-трекере Mozilla.Было несколько обсуждений обходных путей в списке рассылки пользователей WebDriver, но ни один из них не был особенно красив.

4 голосов
/ 24 августа 2012

Вот как это делается для браузера Firefox (по состоянию на selenium-java-2.25.0 jar):

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
1 голос
/ 20 апреля 2012

Вот как я это сделал, что отлично работает, но выглядит как хак.

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());
1 голос
/ 20 апреля 2012

Ссылка в принятом ответе не дает решения. Вот оно (проверено в 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 (не обязательно того, что вы хотите). Фактический метод изменения размера предоставляется интерфейсом Window WebDriver.

0 голосов
/ 26 октября 2011

Вы пытались использовать объект WebDriverBackedSelenium? Я всегда использовал объект селена, чтобы максимизировать окно браузера.

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