#robotframework
Вопрос:
Платформа робота Выбирает файл, не удается загрузить файл в область перетаскивания на веб-странице. Мы не можем использовать AutoIt, так как мы настраиваем наши тесты для запуска в Docker Jenkins. Есть ли способ добиться этого с помощью выполнения Java-скрипта ? Перепробовал множество решений, предложенных в stack overflow, но безуспешно. Ниже приведен домен нашей веб-страницы:
<form>
<ul class="form-fields grid" style="display: flex;">
<li class="row-divider"></li>
<li class="grid__col-6 required" id="Certification.upload" style="display: flex;">
<label for="upload">Certification Document Upload</label>
<div class="Block_block__3KAi_ Block_block__center-content__1bky1" style="height: 6rem;
padding: 0.5rem; border-color: rgb(193, 202, 206);
cursor: pointer;">Drop file here or click to choose file</div>
<input type="file" class="hide text-input">
</li>
<li class="row-divider"></li>
<li class="grid__col-6" id="annualCertification.downloadBlankPDF" style="align-content: baseline; display: flex;"><button class="btn btn--outline" style="margin-top: 1rem; outline: none;"><i class="fa fa-download"></i>amp;nbsp;<span>Blank Certification Form</span> </button></li>
<li class="grid__col-12 form_form__horizontal_rulers__3_u4v"><hr class="line-break"></li>
</ul>
</form>
Попробовал ниже Код фреймворка робота :
execute javascript
... var element=document.evaluate("//input[@type='file']", document, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
... element.setAttribute("class", "text-input");
Choose file //input[@type='file'] ${EXECDIR}/UI/annual-certification-form.pdf
Я не получаю ошибок, но файл не загружен. Мы заполняем несколько других атрибутов в форме, загружаем документ сертификата и отправляем форму для заполнения запроса.
Комментарии:
1. Вы пробовали перетаскивать ?
2. @Dev Перетаскивание ванильного селена (и, следовательно, также SeleniumLibrary) не всегда работает в таких случаях.
3. Перетаскивание также не сработало
Ответ №1:
В зависимости от реализации ваших событий SUT — перетаскивания — особенно, если перетаскивание файла с компьютера в окно браузера обрабатывается несколько иначе, чем механизм «выберите файл для загрузки». Селен и SeleniumLibrary тоже не поддерживают это из коробки.
Однако SeleniumTestability переопределяет Drag And Drop
ключевое слово SeleniumLibrary, чтобы реализовать обходной путь javascript для этого.
Drag And Drop file:${CURDIR}${/}${FILENAME} id:demo-upload
Таким образом, это может работать непосредственно с вашим сценарием, если первый параметр file:
указывает абсолютный путь к файлу, который вы хотите загрузить, и id:demo-upload
соответствующий селектор для ввода ta..
Смотрите мой приемочный тест @ https://github.com/rasjani/robotframework-seleniumtestability/blob/master/atest/draganddropfile.robot
Комментарии:
1. Я попробовал SeleniumTestability, используя ваш пример, но я получаю эту ошибку : Элемент с локатором «файл:../UI/годовая сертификация-форма.pdf» не найден. Но файл находится в указанном пути к файлу, я указал только абсолютный путь. Почему он ожидает, что это будет элемент ?
2. скорее всего, у вас есть несколько файлов набора, которые все импортируют SeleniumLibrary, но другие не будут делать это с помощью плагина ..