Скачивание файла Selenide+Selenoid (fileDownload = FOLDER)

Теги: #<Tag:0x00007f7396b53040> #<Tag:0x00007f7396b52e10> #<Tag:0x00007f7396b52cd0>

Добрый день!
Есть тест который проверяет скачанный файл. Скачиваю в папку с использованием Selenide+Selenoid

Локально все проходит хорошо. В Дженкинсе с недавнего времени появилась проблема при скачивании. Получаю следующую ошибку:

java.lang.IllegalStateException: Downloads folder is not configured
	at com.codeborne.selenide.impl.DownloadFileToFolder.clickAndWaitForNewFilesInDownloadsFolder(DownloadFileToFolder.java:68)
	at com.codeborne.selenide.impl.DownloadFileToFolder.lambda$download$0(DownloadFileToFolder.java:53)
	at com.codeborne.selenide.impl.WindowsCloser.runAndCloseArisedWindows(WindowsCloser.java:25)
	at com.codeborne.selenide.impl.DownloadFileToFolder.download(DownloadFileToFolder.java:52)
	at com.codeborne.selenide.commands.DownloadFile.execute(DownloadFile.java:64)
	at com.codeborne.selenide.commands.DownloadFile.execute(DownloadFile.java:27)
	at com.codeborne.selenide.commands.Commands.execute(Commands.java:155)
	at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:133)
	at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:85)
	at com.sun.proxy.$Proxy109.download(Unknown Source)
	at org.fxclub.qa.core.pages.upp.payment.old_design.DepositPage.downloadInvoice(DepositPage.java:370)

Что-то видимо недонастроено. Но я не знаю что именно

Версии:
Selenide - 5.22.0
selenide-selenoid - 1.1.2

Недавно также разбирался с этой фичей. У меня на Jenkins также всё работает корректно.

Вот эти параметры указываете

Configuration.fileDownload = FileDownloadMode.FOLDER;
Configuration.proxyEnabled = false;

Возможно сеть нужно поднастроить, раз локально всё работает, а удалённо нет
что в iptables настроено? Может какой фильтр включен?

Локально не используется Селеноид, поэтому видимо какая-то интеграция в Селеноиде сломалась.
При первом написании тестов все было хорошо.

Вот эту настройку не использую:

Configuration.proxyEnabled = false

Возможно сеть нужно поднастроить, раз локально всё работает, а удалённо нет
что в iptables настроено? Может какой фильтр включен?

Никаких настроек не было. Точнее ничего не добавлялось.

У вас такая же ошибка была?

Нет такой ошибки не было

Вот мой конфиг инициализации WebDriver

Configuration.remote = "http://" + HOST_HUB + ":4444/wd/hub";
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setBrowserName("chrome");
        capabilities.setVersion("88.0");
        capabilities.setCapability("enableVNC", true);
        capabilities.setCapability("enableVideo", false);
        capabilities.setCapability("acceptInsecureCerts", true);

        LoggingPreferences logPrefs = new LoggingPreferences();
        logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
        capabilities.setCapability("goog:loggingPrefs", logPrefs);
        Configuration.browserCapabilities = capabilities;
        Configuration.browserSize = "1920x1080";
        Configuration.browserPosition = "2x2";
        Configuration.fileDownload = FileDownloadMode.FOLDER;
        Configuration.screenshots = false;

Соотвественно первая строчка Configuration.remote = “http://” + HOST_HUB + “:4444/wd/hub”; подключение к selenoid

И совет кстати на будущее. Если вы будете работать с удалённым подключением, selenoid, selenium grid и т.д. то лучше сразу отлаживаться с удалённым подключением. По крайней мере мне проще так отлаживаться) потом не нужно ещё раз отлаживаться с удалённым подключением)

Да, специфические тесты отлаживаю удаленно. Эта ошибка стала для меня сейчас сюрпризом, потому что я думала что победила скачивание файлов)
Проверю свои конфиги.
А у вас какие версии selenide и selenide-selenoid?

implementation group: ‘com.codeborne’, name: ‘selenide’, version: ‘5.22.3’
implementation group: ‘org.selenide’, name: ‘selenide-selenoid’, version: ‘1.1.3’

А как вы скачиваете файл и проверяете его потом?

@Step(value = "Скачиваем звуковой файл")
    public File downloadSoundFile() {
        File soundFile = null;
        try {
            soundFile = buttonDownloadFile.download();
        } catch (FileNotFoundException e) {
            return null;
        }

        return soundFile;
    }

Затем

assertEquals(downloadSoundFile().getName(), filename,
                "Файл " + filename + " не удалось скачать");

У вас +/- также?

Само скачивание:

@Step("Download invoice")
    public File downloadInvoice() {
        submitBtnPending.shouldBe(Condition.disappear);
        btnSubmit.shouldBe(Condition.enabled);
        File file = btnSubmit.download();
        return file;
    }

Дальше уже передаю в метод верификации пдф файла.
т.е. да, плюс минус так же все
Попробую версии обновить.

Обновила версии selenide и selenide-selenoid.
Все заработало)

2 симпатии