2016-09-28 3 views
3

Я не могу загружать файлы, используя sendKeys(). Это мой кодЗагрузка файла в Selenium с помощью sendKeys() не работает

driver.findElement(By.xpath(Locators.browseFlagIconBtn)).sendKeys("D:\\Images\\icons.png"); 

У меня есть входной тег типа файла для файла загрузить

<input type="file" id="iconFlagFile" name="iconFile" onchange="setFlagIconFile()" value="" class=" file-input-opacity" style="position: absolute; z-index: 100; font-size: 200px; line-height: 200px; top: 0px; left: 0px; opacity: 0;"> 

Однако при нажатии на кнопку отправки формы, где это поле ввода тогда я перенаправлен ниже страницы:

enter image description here

Причина этого вопроса:

Когда я передаю путь с помощью sendKeys(), он правильно подбирает файл, который необходимо загрузить. Однако фактическая загрузка происходит, когда пользователь нажимает кнопку отправки. Теперь я не знаю, почему он ищет файл, который он выбрал в каталоге Chrome, например: "C:\Program Files (x86)\Google\Chrome\Application\53.0.2785.116"

Очевидно, что он не сможет найти файл.

Вопрос: Как это исправить? Дайте мне знать, если мне нужно предоставить дополнительную информацию.

ответ

0

Из вашего объяснения, я предполагаю, что у вас есть тег HTML, который позволяет загружать файл с локального диска, но он не включен. Если вы не нажмете кнопку отправки, она не позволит вам загрузить файл.

В таком случае попытайтесь изменить тэг формы для редактирования, а затем попытаться вызвать метод SendKeys(), и вы можете редактировать HTML элементы Использование JavaScript исполнителя

+0

Было бы неплохо поместить html-код элемента, в который вы хотите поместить путь, это тип входного файла.? – FayazMd

+0

Я добавил html-код. У меня есть входной тег типа файла для загрузки файлов –

0

Пожалуйста, попробуйте выполнить следующие действия JavaScript код ИСПОЛНИТЕЛЬ

String filePath = "D:\\Images\\icons.png"; 
JavascriptExecutor jsx = (JavascriptExecutor) driver; 
jsx.executeScript("document.getElementById('iconFlagFile').value='" + filePath + "';"); 
+0

Если это не сработает, попробуйте выполнить следующее: 'JavascriptExecutor js = (JavascriptExecutor); js.executeScript ("document.getElementById ('iconFlagFile'). Style.display = 'block';"); driver.findElement (By.id ("iconFlagFile")). SendKeys ("D: \\ Images \\ icons.png"); js.executeScript ("document.getElementById ('iconFlagFile'). Style.display = 'none';"); ' – FayazMd

0

Пожалуйста, попробуйте это для загрузки файла.

String filename = "path of the file"; 
    File file = new File(filename); 
    String path = file.getAbsolutePath(); 
    // give the URL to upload 
    driver.findElement(By locator).sendKeys(path); 
+0

Да, я уже пробовал это. Фактическая загрузка файла происходит, когда пользователь нажимает кнопку отправки, а не когда файл выбран в поле «Загрузка файлов». К сожалению, решение, данное вами, не работает в моем случае. :( –

+0

@UbaidAhmed Можете ли вы отправить фактическое исключение –

+0

Я не получаю исключения. Пожалуйста, обратитесь к скриншоту прилагается. Я предоставляю путь D: \, но когда я отправляю форму, она ищет файл в C : \. Когда я выполняю те же шаги вручную, тогда он работает нормально. Проблема возникает, когда это делается с помощью автоматизации. –