Вобщем зарекордил небольшой скриптик на AutoIt для нажатия кнопок SaveAs и вставку имени файла…
Отдельным запуском скрипт работает как надо, вообще нет нареканий.
Хоть напрямую его запускать, хоть через командную строку (Win 10) хоть через Run (Win + R).
В тесте прописал такую строку для вызова этого скрипта:
И вот проблема в том, что вызов скрипта acr1.exe не происходит, драйвер просто зависает и все, диалоговое окно для сохранения файла открыто и висит нетронутым, и может висет очень долго.
Попробуйте так вызвать приложение: Runtime.getRuntime().exec(new String[]{"cmd", "/c", "\"D:\\automation\\Reports\\ACR\\acr1.exe\""});
И ваш вопрос абсолютно не относится к вебдрайверу.
А он сможет нажать на SaveAs и потом в откром диалоговом окне ввести нужное имя файла для сохранения и в случае если этот файл есть то подтвердить перезапись файла?
Selenide просто качает файл и выдает вам ссылку на него, т.е. объект типа File. А там делайте с ним что хотите.
Окно SaveAs - системное. С ним вам не нужно работать. Вы работаете с файлом.
Или с помощью некоторых манипуляций с опциями браузера, вы можете настроить старт вэбдрайвера так, чтоб он при каждом таком действии автоматом скачивал файл в указанную вами дерикторию с возможностью перезаписи. Примеры есть в сети.
Выяснил, что проблема все таки не в запуска ехе файла, с этим все нормально.
Проблема в зависании из-за того, что драйвер не раздупляется, что отчет на странице уже сформирован и все еще ждет.
Вобщем, так и не нашел решения ((
После того как происходит клик на ссылку вот здесь
webSite.reportAcr().downloadReport();
появляется системное окно для сохранения файла, но до этого куска кода не доходит
Process myProcess = Runtime.getRuntime().exec("D:\\automation\\Reports\\ACR\\acr1.exe");
myProcess.waitFor();
Тест падает с ошибкой:
Timed out waiting for page to load selenium
Есть какие то идеи почему так ?
Потому, как все таки драйвер дожидается, пока загрузится полностью отчет на странице и только потом нажимает на ссылку Download… и получается, что страница уже загружена, а что он еще ждет?
а почему вы не напишите простой вызов цмд после того, как кнопка загрузки появится?
а все остальное делать уже после того, как цмд отработает до конца?
имел в виду обычно браузеры конфигурируют чтобы молча загружалось а вам надо наоборот
вот вчера наваял POC с FF (знаю что FF умеет молча загружать но тюнить проект запускать IE не хватило времени вчера
AutoItX instance = AutoItX.getInstance();
FirefoxProfile profile = new FirefoxProfile();
// ...
capabilities.setCapability("marionette", false);
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
driver = new FirefoxDriver(capabilities);
String directURL = "https://file-examples.com/wp-content/uploads/2017/02/zip_9MB.zip";
driver.navigate().to(directURL);
sleep(timeout);
title = "[ACTIVE]";
String windowTitle = instance.WinGetTitle(title, text);
assertThat(windowTitle, notNullValue());
System.err.println(
String.format("The active window title is \"%s\"", windowTitle));
// печатает The active window title is "Opening zip_9MB.zip"
sleep(100);
instance.Send("{DOWN}", true); // arrow key down
sleep(100);
instance.Send("{TAB}", true);
sleep(100);
instance.Send("{TAB}", true);
sleep(100);
instance.Send("{TAB}", true);
sleep(100);
instance.Send("{ENTER}", true);
sleep(10000);
result = instance.WinGetText(title, text);
// NOTE: Mozilla Firefox Download Manager dialog button does not return any
// text of interest
assertThat(result, notNullValue());
System.err.println(String.format("The result is \"%s\"", result));
// Downloaded file will be found in the default location, that is
// configurable through Mozilla Firefox profile e.g.
// $env:USERPROFILE:/Downloads
sleep(1000);
а можно еще про этот момент рассказать, потому, как вроде начало доходить, что может и правда не надо с окнами этими работать, а втихаря скачал файл куда надо и там уже с ним работать …
ну если вдруг у нас появится линукс, то соответственно ИЕ там уже не будет и можно будет перейти на ФФ, а это уже снимет эту проблему автоматом, т.к. уже нарыл инфу о том, что ФФ можно переконфигурить и обойтись без этих окон для сохранения файла …
Мак вообще не рассматриваю, т.к. переход на его равен нулю … ))