Невозможно увеличить окно Chrome в режиме безглавых
Недавно я обновил свою версию Chrome до 60, а Chromeriver до версии 2.31. Сообщите, что я начал получать следующее исключение при попытке развернуть окно браузера.
driver.driver.manage().window().maximize()
org.openqa.selenium.WebDriverException: unknown error: failed to
change window state to maximized, current state is normal (Session
info: chrome=60.0.3112.78) (Driver info: chromedriver=2.31.488763
(092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux
4.2.0-27-generic x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 108 milliseconds
Build info: version: '2.53.1', revision:
'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30
19:26:09' System info: host: 'bb-blr-prod-stage-stg1-01', ip:
'10.3.211.2', os.name: 'Linux', os.arch: 'amd64', os.version:
'4.2.0-27-generic', java.version: '1.7.0_80' Session ID:
c7de7149dd490cc7760d2f4fc49f0325 Driver info:
org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform=LINUX,
acceptSslCerts=true, javascriptEnabled=true, browserName=chrome,
chrome={userDataDir=/tmp/.org.chromium.Chromium.WABPhO,
chromedriverVersion=2.31.488763
(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)},
networkConnectionEnabled=false, unexpectedAlertBehaviour=,
rotatable=false, setWindowRect=true, locationContextEnabled=true,
mobileEmulationEnabled=false, pageLoadStrategy=normal,
version=60.0.3112.78, takesHeapSnapshot=true,
cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true,
browserConnectionEnabled=false, webStorageEnabled=true,
nativeEvents=true, hasTouchScreen=false,
applicationCacheEnabled=false, takesScreenshot=true}]
Я запускаю свои тесты в автономном режиме, используя ChromeDriver на Geb.
- Версия Chrome - 60.0.3112.78
- версия хроматического драйвера - 2.31.488763
- ОС - Ubuntu 14.04.4 LTS
- Версия Selenium - 2.53.1
- Привязки языка WebDriver
- Геб - 0.13.1
Ответы
Ответ 1
Поскольку вы запускаете тесты в автономном режиме, окно браузера active
недоступно. Как таковой ваш
driver.driver.manage().window().maximize()
всегда будет терпеть неудачу в таких ситуациях, потому что драйвер не знает, какое окно развернуть, так как оно недоступно.
Вы можете либо следовать тому, что упомянул @DebanjanB, либо запустить браузер без монитора с определенным размером экрана, например 1440x900 и т.д., Сделав что-то вроде этого
driver.manage().window().setSize(new Dimension(1440, 900));
Ответ 2
Добавьте ниже ChromeOption
в ваш код:
options.addArguments("--window-size=1325x744");
Также обратитесь к этому блогу для более
Ответ 3
Это открытая ошибка (ниже): https://bugs.chromium.org/p/chromedriver/issues/detail?id=1901
Ответ 4
Я использую chromedriver 2.30 и chrome browser v60 через транспортир. Я запускаю тесты без головы, хотя я не делаю этого с помощью хромопций. Скорее я запускаю тесты без головы, используя xvfb-run в дистрибутиве unix. Я тоже сталкиваюсь с этой проблемой, хотя для меня это не случайно. См. Таблицу ниже
[chrome #11] [31mWebDriverError: unknown error: failed to change window state to maximized, current state is normal
[chrome #11] (Session info: chrome=60.0.3112.78)
[chrome #11] (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 3.10.0-514.26.2.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
[chrome #11] Command duration or timeout: 122 milliseconds
[chrome #11] Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
[chrome #11] System info: host: 's1wfadvcilvm08', ip: '172.16.184.183', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-514.26.2.el7.x86_64', java.version: '1.8.0_141'
[chrome #11] Driver info: org.openqa.selenium.chrome.ChromeDriver
[chrome #11] Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57), userDataDir=/tmp/.org.chromium.Chromium.BNsN1w}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=60.0.3112.78, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Мой код в начале каждого теста выполняет следующие
browser.manage().window().maximize();
меняется на
driver.driver.manage().window().maximize();
driver.manage().window().maximize();
не работает для меня, к сожалению. Должен ли браузер .manage(). Window(). Maximize() работать все еще, поскольку я запускаю безголовную работу с использованием xvfb-run, а не без headless через опции chrome?
Ответ 5
Я бы посоветовал вам немного изменить строку кода:
Изменить:
driver.driver.manage().window().maximize()
Для того, чтобы:
driver.manage().window().maximize()
В случае, если это не помогает, если вы используете привязки Selenium в качестве Java
и используете Chrome
в headless
режиме в соответствии с рекомендациями, рекомендуется развернуть браузер Google Chrome с помощью класса ChromeOptions
следующим образом:
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.navigate().to("https://google.com");