Selenium webdriver python не может загрузить файл - send_keys выбрасывает ElementNotInteractable - PullRequest
2 голосов
/ 05 августа 2020

Итак, я пытаюсь загрузить файл с помощью selenium webbrowser send_keys, но он не работает. Пожалуйста, помогите.

from selenium import webdriver
import  time

driver = webdriver.Chrome(executable_path="../drivers/chromedriver")
driver.implicitly_wait(5)
driver.maximize_window()

driver.get("https://postimages.org/nl/")

element = driver.find_element_by_xpath("//*[@id='uploadFile']")
element.send_keys("Demo/test.png")

ошибка:

Traceback (последний вызов последним): файл "/home/kuba/PycharmProjects/Test/Demo/UploadTest.py", строка 12, в файле element.send_keys ("Demo / test.png") "/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", строка 477, в send_keys self._execute (Command.SEND_KEYS_TO_ELEMENT, File "/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", строка 633 , в _execute return self._parent.execute (command, params) File "/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", строка 321, в файле execute self.error_handler.check_response (response) "/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", строка 242, в check_response поднять класс исключения (сообщение, экран, трассировка стека)

selenium.common.exceptions.ElementNotInteractableException: Messag e: элемент не взаимодействует (информация о сеансе: chrome = 84.0.4147.89)

1 Ответ

0 голосов
/ 05 августа 2020

Причина root проблемы связана с тем, что ссылка «загрузить файл» на веб-сайте (postimages.org) не является полем ввода.

Selenium webdriver для Python позволяет загружать файлы через использование метода send_keys , только если кнопка загрузки является полем ввода.

Ожидается (для работы send_keys)

<input id="uploadFile" type="file">

Собственно найдено (причина почему send_keys не работает)

<span id="uploadFile" class="btn btn-lg dz-clickable" >

Как исправить проблему?

Подход of send_keys не будет работать для этого веб-сайта, так как у него нет элемента ввода, необходимого для webdriver. Следовательно, для этой цели необходимо использовать альтернативный подход.

Веб-сайт - https://postimages.org/nl/ поддерживает функцию «копировать + вставить» для загрузки изображений.

Это может выполняется в python следующим образом:

Шаг 1: Копирование изображения в системный буфер обмена

Шаг 2: Используйте Webdriver, чтобы щелкнуть на веб-странице.

Шаг 3: Используйте webdriver для отправки «CTRL + V» на веб-страницу. Убедитесь, что изображение загружено.

...