Выберите File Robot Framework, а не загружать файл
Я разрабатываю сценарий, в котором файл загружается с использованием choose file
ключевое слово каркас робота. Тест выполняется, и когда выполняется выбор файла, он попадает в локатор для <input type="file">
В пользовательском интерфейсе внизу страницы отображается красное поле (см. вложение), но файл не загружен.
Я не уверен, что пользовательский интерфейс не знает, как обрабатывать загрузку, или в моем коде есть ошибка:
choose file xpath=/html/body/div/div/div/div[2]/div/div/div/div/div/div/div/div/div[1]/div[1]/div[2]/div/span ${dataDir}studentSAT.csv
${dataDir}
переменная содержит полный путь ОС к файлу, и файл находится в этом месте. В качестве точки проверки я попытался изменить имя файла на имя, которого нет, и робот выдает ошибку, сообщающую о недоступности данных.
Кто-нибудь сталкивался с этим раньше?
2 ответа
После некоторого дополнительного рытья оказывается, что в этом случае <input type=file>
элемент не был виден Красное поле в левом нижнем углу - это попытка браузеров работать с передаваемым ему файлом без какого-либо известного способа взаимодействия с элементом, который не был виден. Изменение свойств отображения элемента с 'style.display = "none"`на'style.display = "block"" позволило элементу быть видимым на экране и быть выбранным.
Я реализовал шаг ключевого слова execute javascript перед попыткой передать файл.csv, и теперь он прекрасно работает.
Код:
execute javascript window.frames[0]; document.querySelector( "input[name='file-uploader']" ).style.display = "block";
Я сталкивался с той же проблемой раньше, я пробовал несколько вещей, таких как Имитация действий с ключевыми словами и ввод пути к файлу в диалоговом окне загрузки файла, Использование Выбрать ключевое слово файла, Библиотека AutoIT для Robot Framework.
1) Если вы собираетесь запускать свои тесты на локальном компьютере, я бы сказал, использовать pyautogui (для Python) и Robot Class (для Java) и использовать методы Tab/Enter/Key Press и выполнять эту работу.
2) Если вы собираетесь запустить тест на удаленной машине, также называемой виртуальной машиной, настройте AutoIT на RemoteMachine/VM и используйте библиотеку AutoIT для Robot Framework.