t.me/atinfo_chat Telegram группа по автоматизации тестирования

Linux сервер в headless режиме не открывается страница chrome://downloads

Теги: #<Tag:0x00007f07fbb239a0> #<Tag:0x00007f07fbb23810> #<Tag:0x00007f07fbb23720> #<Tag:0x00007f07fbb23608> #<Tag:0x00007f07fbb23518> #<Tag:0x00007f07fbb23428> #<Tag:0x00007f07fbb23338>

Приветствую!

В кратце про тест:
Тест проверяет, что данные в таблице на сайте соответствуют данным в экспортируемые в csv, xls формат файлы

Возникла проблема с получением имени файла, который скачал

    String fileName;
    String filePath;

    driver.get("chrome://downloads");
    JavascriptExecutor js = (JavascriptExecutor) driver;

    fileName = (String) js.executeScript("return document.querySelector('downloads-manager').shadowRoot.querySelector('#downloadsList downloads-item').shadowRoot.querySelector('div#content #file-link').text");

    File folder = new File(System.getProperty("user.dir"));
    filePath = folder + "/" + fileName;
    return filePath;

это отлично работает локально, я открываю страницу chrome://downloads и с помощью JS скрипта достаю имя файла.

После того как тесты начали ранить через CI на линукс сервере в headless режиме, я увидел, что эти тесты постоянно падают с ошибкой:
javascript error: Cannot read property ‘shadowRoot’ of null

на скриншоте просто белый экран. На сколько я понял, то в headless режиме есть проблема с открытием downloads. Но, не разобрался пока что, как эту проблему решить.

Если кто-то сталкивался с подобным или можете предложить другие стабильные варианты получения имени файла буду очень благодарен!

Да, у меня такая же проблема. В обычном режиме работает, в headless режиме не работает. Причина в том, что ссылка chrome://downloads в headless режиме недоступна. При переходе на страницу chrome://downloads в headless режиме выдается ошибка
“ERR_INVALID_URL at chrome://downloads/”.

Эта проблема присутствует и в Windows, и в Linux

Не смог победить эту проблему.
В devtools есть событие downloadWillBegin которое должно генерироваться при старте загрузки файла. Там в параметрах есть имя загружаемого файла. Но у меня это событие тоже отказалось работать. Не генерируется.

Решил проблему проверкой папки куда загружаются файлы. Выбираю только новые загруженные файлы.