Selenide в Headless Chrome режиме не видит элементы

Проблема (Вопрос) заключается …
Сделал много тестов по UI, возникла проблема с временем прохождения тестов перед выпуском релиза. В целях увеличения скорости прохождения тестов попробовали гнать тесты в Headless режиме, но они валятся с ошибкой Caused by: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element:

Может есть какое то решение?

Удостоверьтесь что браузер запускается с нужным размером окошка.

Поставил размер 3000*2000, здесь точно будут все элементы, но не один тест не идет… ошибка та же

Вы моё сообщение ещё раз прочитайте, а.
Поставить вы поставили… а оно точно запускается с таким размером?

1 лайк

Может я не понял чего… установил нужное разрешение, запустил в обычном режиме все работает. Поставил скрытый режим ничего не работает. Как еще проверить, что запускается с верным разрешением?

Конфигурация для запуска:
Configuration.browserSize = “1920x1080”;
Configuration.headless = false;
Configuration.startMaximized = false;
Configuration.holdBrowserOpen = false;

Headless работает немного по другому. Не раз замечал отличия. Основная проблема в том что нжны дополнительные вайты, хеадлесс режим быстре потому что не рендерит ничего.

есть пример ?

пример чего?
подождите пока страница полностью загрузится, сделайте скриншот, посмотрите что да как

Если вы хотите чтобы всё быстро пробегало, при этом был и VNC и видео-запись, то лучше использовать GGR/Selenoid, нежели чем хедлесс, с которым вечно какие-то косяки вылезают.

1 лайк

пример доп вайтов

вы пришли сюда с абстрактной ошибкой и требуете помощи

у вас код есть, который выложить можно?

ждёте ли вы, пока элемент станет кликабельным? ну или что он вообще появится

1 лайк

Explicit Wait попробуйте. какой Я Вам пример могу дать если мы даже не знаем на каком ЯП проект )))

В общем выяснил проблему. Снял скриншот с упавшего теста, оказалось что в скрытом режиме пользователь не проходит аутенфикацию, на проекте используется Kerberos. Он не выдает session ticket.

Тему можно закрывать, дальше уже надо решать эту проблему. Писать шелл для chromedriver.

а стоило только захотеть разобраться :smirk:

С селенидом как раз всё это не нужно. Селенид же сам ждёт всяких таких штук.
Нет, у меня все мои тесты прекрасно взлетели в хедлесс режиме без каких-либо дополнительных действий.

Может немного не в тему. Как по мне, изначальная проблема - время прохождения тестов. Решается паралелизацией тестов или разбиением на сьюиты. Идеально - паралелизация. Данное решение упрется в тужу проблему через 3 месяца, когда будет еще +50.100 тестов.

Надо подумать над этим , но проблема в то что для каждого группы тестов создаются практически одни и те же фикстуры в БД. Как бы не вышло бы накладки.

На проекте используется JUnit5, прописал файл junit-platform.properties с настройками:
junit.jupiter.execution.parallel.enabled=true
junit.jupiter.execution.parallel.config.strategy=dynamic
Классы с тестами запускаю через аннотацию @Execution(ExecutionMode…)