2017-01-24 2 views
0

На моем веб-автоматизации я пытался использовать такой код, который не работает:Как загрузить файлы/несколько файлов с узла в Selenium

WebElement El = driver.findElement((By.xpath(".//*[@id='app']/div[1]/div[2]/div[1]/div/div[2]/form/label/span[1]/span"))); 
     ((RemoteWebElement) El).setFileDetector(new LocalFileDetector()); 
     El.sendKeys("~/Documents/Data/20_10MB/176H.jpg"); 

Проблема заключается в том, что он не может найти элемент. Элемент, расположенный на веб-сайте, имеет только Xpath. У него нет другого уникального идентификатора.

Мне нужно написать тест, который будет загружать 1 или несколько файлов (до 10 000) или целую папку. Как я могу это сделать на Mac?

Текущая настройка - это концентратор, который будет вызывать проверку на узловых машинах. Робот не работает, потому что он будет автоматизировать ключи только на локальной машине. Что такое обходной путь?

+0

Ваш xpath сложный и хрупкий, неудивительно, что он не находит элемент. Можете ли вы опубликовать короткий соответствующий html вокруг элемента, с которым вы пытаетесь взаимодействовать? – nilesh

ответ

0

Кажется, что вы пытаетесь обработать неправильный элемент, так как span - это не то, что вам нужно. Попробуйте под кодом:

WebElement El = driver.findElement((By.xpath("//input[@type='file']"))); 
El.sendKeys("~/Documents/Data/20_10MB/176H.jpg"); 
+0

Вопрос 1: В нем говорится: «Путь не является абсолютным». Но мне не нужен Абсолютный путь, потому что у каждого узла будет другое местоположение файла, что означает, что Node 1 будет/userMartin/testFiles, а пользователем 2 будет/userJoe/testFiles. Есть ли способ, как узел будет наследовать файлы из Grid? Или как я могу использовать тест без абсолютного пути. Поскольку загрузка 5000 с Hub на Node и с узла на Интернет займет гораздо больше времени, а затем напрямую от узла к сети. Как использовать относительный путь вместо абсолютного «~/Documents/Data/20_10MB/176H.jpg» И вопрос 2: Как я могу выбрать несколько файлов? Значение 500+ файлов – Anton

+0

1. Ну, вы можете хранить все свои тестовые файлы на одном удаленном сервере и делать запрос «HTTP-GET» для загрузки каждого файла просто по имени, но он кажется немного сложным и требует веб-трафика и больше времени , 2. На самом деле вы можете загружать более 1 файла вручную с помощью 'UI'? – Andersson

+0

Я использовал робот, но в этом случае он не будет работать. Потому что он будет выполняться только на локальной машине. Используя робот, я просто указываю на один файл и использую горячую клавишу cmd + A – Anton

Смежные вопросы