it-roy-ru.com

WebDriverException: неизвестная ошибка: не удалось изменить состояние окна до максимального, текущее состояние нормальное с ChromeDriver v2.43 и Chrome 70 на MacOSX

Мой macOS только что обновил chrome автоматически до v70, я обновил chromedriver до последней версии соответственно, однако мои тесты автоматизации Selenium не могут быть запущены из-за ошибки ниже при вызове 

tempDriver.manage().window().maximize();

Сообщение об ошибке

org.openqa.Selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal
  (Session info: chrome=70.0.3538.67)
  (Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.14.0 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 111 milliseconds
Build info: version: '2.39.0', revision: '14fa800511cc5d66d426e08b0b2ab926c7ed7398', time: '2013-12-16 13:18:38'
System info: Host: 'jingfeideMacBook-Pro.local', ip: '127.0.0.1', os.name: 'Mac OS X', os.Arch: 'x86_64', os.version: '10.14', Java.version: '1.8.0_111'
Driver info: org.openqa.Selenium.chrome.ChromeDriver
Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=MAC, acceptSslCerts=false, goog:chromeOptions={debuggerAddress=localhost:58298}, acceptInsecureCerts=false, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8), userDataDir=/var/folders/mc/p32y5m3503b8qrq4nv3fjc280000gn/T/.org.chromium.Chromium.tp2flf}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, version=70.0.3538.67, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
Session ID: 5010a1722b23e3829ebcb8b45ceab234
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:423)
    at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:193)
    at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:145)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:554)
    at org.openqa.Selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.maximize(RemoteWebDriver.Java:783)

Какие-нибудь мысли? Я знаю, что версия Selenium немного устарела, но я не могу обновить ее из-за корпоративной политики или чего-то подобного.

Балин

2
machinarium

Пока проблема не будет решена, вы можете обойти это с помощью:

Пользовательский размер окна

driver.manage().window().setSize(new Dimension(1920, 1080));

Вы можете получить разрешение экрана

Toolkit toolkit = Toolkit.getDefaultToolkit();
int width = (int) toolkit.getScreenSize().getWidth();
int height = (int) toolkit.getScreenSize().getHeight();

Аргумент к хрому

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");

Javascript Executor

((JavascriptExecutor) driver).executeScript("if(window.screen){
    window.moveTo(0, 0);
    window.resizeTo(window.screen.availWidth, window.screen.availHeight);
    };");
1
Infern0

Это сообщение об ошибке ...

org.openqa.Selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal

... подразумевает, что ChromeDriver не удалось максимизировать состояние окна Браузер Chrome клиента.

Не знаю, как решить эту проблему с комбинацией ChromeDriver v2.43 и Chrome Browser v70.0, но похоже на проблему регрессии для Запрос функции: ChromeDriver поддерживает изменение размера окна поверх удаленное соединение .

ChromeDriver v2.43 в Примечаниях к выпуску явно упоминается:

Решена проблема 1855: Запрос функции: ChromeDriver для поддержки изменения размера окна через удаленное соединение [[Pri-2]]


Багги Mac OSX ChromeDriver заменен

После выхода Chrome версии 70 некоторые из вас сообщили, что использование ChromeDriver для увеличения окна браузера на Mac больше не работает. Команда ChromeDriver изучила эту проблему и создала исправление для нее. Сборки ChromeDriver с исправлением теперь доступны в следующих местах:

Снимок электронной почты о выпуске ChromeDriver:

 ChromeDriver_new


Однако согласно лучшие практики для максимизации клиента Chrome Browser предлагается использовать класс ChromeOptions следующим образом:

System.setProperty("webdriver.chrome.driver", "C:\\your_directory\\chromedriver.exe");
ChromeOptions opt = new ChromeOptions();
opt.addArguments("disable-infobars");
opt.addArguments("--start-maximized");
opt.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(opt);
driver.get("https://google.com");

Вы можете найти подробное обсуждение в driver.manage (). Window (). Maximize () проблема с ChromeDriver 2.33


Дополнительное рассмотрение

  • Ваш версия JDK является 1.8.0_111, что довольно древний .
    • Обновите JDK до последних уровней JDK 8u181 .
  • Ваша Selenium Client версия 2.39.0 из 2013-12-16 13:18:38, которая почти на 2 года старше .
2
DebanjanB

Мы столкнулись с той же проблемой, обходной путь - закомментировать код:

tempDriver.manage().window().maximize();

0
River