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");

Если вы обнаружите какую-либо проблему, проверьте полную статью с видео.