Selenium WebDriver: загрузка нескольких файлов
Мой тест должен загружать тестовые файлы в разных браузерах (я использую WebDriver
+ Java
).
Для загрузки одного файла все работает отлично. Я просто отправляю путь
"C:\\testdata\\testfile.txt"
But, syntax changes for multiple upload and different browsers.
(
IE:
"\"" + "C:\\Selenium\\TestData\\Flexy - BigFile1.txt"+"\"" +"\""+"C:\\Selenium\\TestData\\Flexy - BigFile2.txt" + "\""
CHROME:
"C:\\Selenium\\TestData\\Flexy - BigFile1.txt"+"\n"+"C:\\Selenium\\TestData\\Flexy - BigFile2.txt".
Firefox: я не могу найти правильный синтаксис.
Любая идея?
Существует ли общий синтаксис для всех браузеров?
Ответы
Ответ 1
Насколько мне известно, селен по-прежнему не поддерживает множественную загрузку файлов (см. проблема в коде google).
Существует, по крайней мере, одно обходное решение: видимо, создайте форму, содержащую столько полей ввода, сколько вам нужно (см. другой вопрос о стеке). Не лучшее решение, так как оно (возможно) требует изменения кода для работы селена.
Однако, как вы узнали (спасибо за это!), кажется, что можно запускать несколько загрузок файлов в хром и (хотя я и не тестировал их) IE.
Я только что подтвердил, что хром "\n" трюк работает как локально, так и в браузере (я использовал изображения по умолчанию, которые они предоставляют), что, учитывая состояние вещей, для меня достаточно.
Надеюсь, это поможет.
Ответ 2
Решение для меня (селен в python) состояло в том, чтобы просто повторить send_keys для каждого пути изображения перед загрузкой.
Пример для двух файлов:
driver.find_element_by_name("filename").send_keys(file_path_1)
driver.find_element_by_name("filename").send_keys(file_path_2)
driver.find_elements_by_xpath("//*[contains(text(), 'Upload')]")[0].send_keys(Keys.RETURN)
Ответ 3
У меня также есть возможность загрузить несколько файлов через Selenium.
Наконец, получим решение с помощью AutoIT.
Вы можете передать путь файла во время выполнения.
ControlFocus("File Upload","","Edit1″)
ControlSetText("File Upload","","Edit1″,$CmdLine[1])
ControlClick("File Upload","","Button1″)
Runtime.getRuntime().exec("C:\\Users\\Mukesh_50\\Desktop\\My blog\\AutoIT\\fileUpload3.exe"+" "+"C:\\Users\\Mukesh_50\\Downloads\\VerifyTitle.java");
Если вы обнаружите какую-либо проблему, проверьте полную статью с видео.