Всплывающее окно файла Windows не добавит мой файл в Selenium & JAVA. Почему

Я пытаюсь загрузить файл во всплывающем окне после нажатия кнопки:

После нажатия на эту кнопку появится всплывающее окно:

Я нажимаю на эту кнопку, используя это:

driver.findElement(By.xpath("//*[@id=\"div-add-file\"]/a")).click();

Затем я использовал это:

driver.switchTo().activeElement().sendKeys("C:\\Users\\Steve\\Downloads\\01004185FCA003900517097.pdf");

Это не работает.

Я попытался сделать что-то подобное, избегая нажатия кнопки, но отправляя путь к файлу:

driver.findElement(By.xpath("//*[@id=\"div-add-file\"]/a")).sendKeys("C:\\Users\\Maxi\\Downloads\\01004185FCA003900517097.pdf");

но это не сработает.

Я делаю что-то не так?

softwaretestinghelp.com/file-upload-in-selenium
Swaroop Humane 05.10.2022 03:41
stackoverflow.com/questions/11256732/…
Swaroop Humane 05.10.2022 03:41

Привет, @SwaroopHumane, я сделал это, но это не работает: WebElementbrowse = driver.findElement(By.xpath("//*[@id=\"div-add-file\"]/a")); browse.sendKeys("C:\\Users\\Steven\\Downloads\\01004185FCA0‌​03900517097.pdf");

new_programmer 05.10.2022 04:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Загрузка файла с помощью Selenium осуществляется путем отправки пути к загружаемому файлу в специальный элемент на странице. Этот элемент обычно можно найти с помощью этого XPath: //input[@type='file']
Таким образом, ваша команда может быть примерно следующей:

driver.findElement(By.xpath("//input[@type='file']")).sendKeys("C:\\Users\\Maxi\\Downloads\\01004185FCA003900517097.pdf");

Возможно, вам нужно будет добавить некоторую задержку, чтобы страница загружалась. Если да, то следует использовать WebDriverWait.

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@type='file']"))).sendKeys("C:\\Users\\Maxi\\Downloads\\01004185FCA003900517097.pdf");

Иногда на одной странице будет несколько более 1 входов, соответствующих указанному выше локатору, а иногда такого элемента не будет.
В случае, если указанному выше локатору соответствует более 1 элемента, нам нужно будет найти точный, уникальный локатор.
В случае отсутствия такого элемента нам придется найти другой способ загрузки файла.

Эй, приятель, я проверяю это

new_programmer 05.10.2022 22:01

Почему вы указываете "("//input[@type='file']")? Это необходимо?

new_programmer 05.10.2022 22:38

Да. Это локатор этого элемента

Prophet 05.10.2022 23:04

Приятель, взгляни на это: stackoverflow.com/questions/74008505/…

new_programmer 09.10.2022 23:46

Меня здесь не было. посмотрю

Prophet 10.10.2022 18:30

Другие вопросы по теме