Selenium Webdriver Python无法上传文件-send_keys抛出ElementNotInteractable

时间:2020-08-05 20:18:31

标签: python selenium selenium-webdriver webdriver sendkeys

因此,我尝试使用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")

错误是:

回溯(最近通话最近): 在第12行的文件“ /home/kuba/PycharmProjects/Test/Demo/UploadTest.py” element.send_keys(“ Demo / test.png”) send_keys中的第477行的文件“ /home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py” self._execute(Command.SEND_KEYS_TO_ELEMENT, 文件“ /home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py”,行633,在_execute中 返回self._parent.execute(command,params) 在执行中,文件“ /home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第321行 self.error_handler.check_response(响应) 文件“ /home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_response中 引发exception_class(消息,屏幕,堆栈跟踪)

selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互 (会话信息:chrome = 84.0.4147.89)

1 个答案:

答案 0 :(得分:0)

此问题的根本原因是由于网站(postimages.org)上的“上传文件”链接不是输入字段。

用于Python的硒Web驱动程序仅在上传按钮为输入字段的情况下才允许使用 send_keys 方法上传文件。

预期(要使send_key起作用)

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

实际发现(原因send_keys不起作用的原因)

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

如何解决该问题?

send_keys的方法不适用于该网站,因为它没有webdriver要求的输入元素。因此,为此目的需要使用另一种方法。

网站-https://postimages.org/nl/支持 用于复制图片的“复制+粘贴”功能。

这可以在python中完成,如下所示:

步骤1:将图像复制到系统剪贴板

步骤2:使用Webdriver单击网页。

步骤3:使用网络驱动程序将“ CTRL + V”发送到网页。 确认图片已上传。