Serenity + Selenoid, хром падает c failed to change window state to maximized

Весло: Убунту 16.4, последний хромдрайвер, последний хром, серенити + кукумбер 2.11, джава 8, монитор 19201080 Селеноид последней версии, устанавливал как докер контейнер, докер 17.05
Сейчас: контейнера с файрфоксом работают нормально но с хромом вроде как ошибка вебдрайвера, при старте локально установленого хрома все гуд
Надо: разобраться почему с хромом проблемы т.к. контейнер стартует (мигает 1920
1080*24) но тут же падает, собираю проэкт мавеном чрез команду: mvn verify -Dwebdriver.remote.url=http://localhost:4444/wd/hub -Dwebdriver.remote.driver=chrome -Dchrome.switches="–no-sandbox,–ignore-certificate-errors,–start-maximized" -Dwebdriver.remote.browser.version=69 -Dinjected.tags=browser:chrome69 -Dcontext=Chrome69**
Что уже пробовал: запуск без start-maximized, запуск с высотой шириной, запуск вообще без параметров, одна и та же ошибка.

Вот что пишет в консоли:

14824 [main] ERROR net.serenitybdd.core.pages.PageObject - Could not execute @WhenPageOpens annotated method: null
15094 [main] ERROR net.thucydides.core.steps.ConsoleLoggingListener -

TEST FAILED WITH ERROR: Check chart with filtered object

15094 [main] ERROR net.thucydides.core.steps.ConsoleLoggingListener - TEST FAILED AT STEP Login with credentials: xxxxxxxxxxxxxxxxxxxxxxxxxx
15095 [main] ERROR net.thucydides.core.steps.ConsoleLoggingListener - unknown error: failed to change window state to maximized, current state is normal (Session info: chrome=70.0.3538.67) (Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 4.15.0-39-generic x86_64) (WARNING: The server did not provide any stacktrace information)Command duration or timeout: 0 millisecondsBuild info: version: ‘3.14.0’, revision: ‘aacccce0’, time: '2018-08-02T20:19:58.91Z’System info: host: ‘andriy-To-be-filled-by-O-E-M’, ip: ‘127.0.1.1’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.15.0-39-generic’, java.version: '1.8.0_191’Driver info: org.openqa.selenium.remote.RemoteWebDriverCapabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.43.600233 (523efee95e3d68…, userDataDir: /tmp/.org.chromium.Chromium…}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:33719}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 70.0.3538.67, webStorageEnabled: true}Session ID: 14fec0b8cf8155928c8ad8f6759212c0Build info: version: ‘3.14.0’, revision: ‘aacccce0’, time: '2018-08-02T20:19:58.91Z’System info: host: ‘andriy-To-be-filled-by-O-E-M’, ip: ‘127.0.1.1’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.15.0-39-generic’, java.version: '1.8.0_191’Driver info: driver.version: unknown
15208 [main] INFO net.thucydides.core.steps.ConsoleLoggingListener -

Сейчас по-умолчанию оно не работает, потому что есть проблема со стартом оконного менеджера. Он не всегда стартует в одно и то же время и тесты мигают. Чтобы включить оконный менеджер в Selenoid, нужно выставить переменную окружения ENABLE_WINDOW_MANAGER=true у контейнера с браузером (можно через browsers.json, можно через капабилити).

Это чинится в Add binary to wait for window manager · Issue #54 · aerokube/images · GitHub.

1 лайк

Спасибо, буду пробовать!!

@vania_pooh, а не подскажете как добавить опцию, если у нас Selenoid запускается таким образом:

/usr/bin/cm selenoid start --version 1.9.1 --vnc --browsers "chrome:67.0;chrome:73.0;firefox:60.0;firefox:66.0" --args "-limit 4 -timeout 5m0s -disable-queue"

тоесть без использования browsers.json файла.

Сейчас такое не поддерживается. Но мы скоро исправим сами образы и переменная окружения будет не нужна.

Спасибо за быстрый ответ! Так выходит единственный способ - это прописать в browsers.json? Было сказано еще что можна через “капабилити”, как понимаю DesiredCapabilities при создании браузера, может чето нетуда прописал, но пока не взлетело…

Вот как здесь показано еще можно: Selenoid - A cross browser Selenium solution for Docker В случае Java нужно создавать ArrayList.

1 лайк

Спасибо!
Работает, если вот так прописать:
options.setCapability("env", Lists.newArrayList("ENABLE_WINDOW_MANAGER=true"));
импорты либ опустил.