2015-06-01 4 views
3

У меня есть загрузка файла изображения и вы хотите его протестировать Selenium (java). У пользователя есть два варианта. Он может нажать изображение с помощью перетаскивания с его локальной машины или нажать кнопку «Обзор ...». Затем появляется выбранный браузер вариант выбора файла.Selenium File Chooser со скрытым вводом [type = file]

Selenium Я пробовал разные вещи. Насколько мне известно Selenium не выполняет операции из браузера. Таким образом, тестирование функции перетаскивания не является возможным решением.

Итак, я попытался нажать кнопку «Обзор» и работать с выбранным вами браузером. Я нашел YouTube video, где кто-то успешно выбирает файл в этом диалоговом окне. Он взял класс Robot, чтобы что-то сделать на клавиатуре.

getDriver().findElement(By.id(BROWSE_BUTTON)).click(); 

Thread.sleep(5000); 

StringSelection stringSelection = new StringSelection("C:\\A.JPG"); 
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); 

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER); 

Когда я отлаживать эти строки, тест в ожидании после метода нажмите() в строке 1. Я использую Firefox 31.1.

Любые идеи? Может быть, есть альтернативы? Чтобы записать путь к файлу в input[type='file'], альтернативы не существует, потому что этот ввод скрыт.

+0

Каким элементом является кнопка «Обзор»? –

ответ

2

Скрытый входной файл не был проблемой с Firefox или Chrome. И, v2.45.0.6 гарантирует, что IE работает со скрытым вводом файла. Так просто sendkeys() с использованием input[type='file'] должно быть хорошо для вас. См changelog

EDIT

Для FF это может быть проблема совместимости, а также. Но последняя версия FF пока не поддерживается Selenium. См this

второй Редактировать

Селен 2,46 был освобожден и IEDriver должен работать с скрытый файл ввода тега в настоящее время.

+0

driver.findElement (By.id ("uploadFile")). SendKeys ("C: /A.JPG"); не работает для меня. – JV3

+0

Можете ли вы предоставить html и stacktrace? – Saifur

+0

HTML: Ничего не добавлено в консоль в строке: driver.findElement (By.id ("uploadFile")). SendKeys ("C : /A.JPG "); – JV3