Selenium webdriver python 无法上传文件 - send_keys 抛出 ElementNotInteractable

Selenium webdriver python can't upload file - send_keys is throws ElementNotInteractable

所以我尝试使用 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")

错误是:

回溯(最近调用最后): 文件“/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, 文件“/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py”,第 633 行,在 _execute 中 return self._parent.execute(命令,参数) 文件“/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)

问题的根本原因是网站 (postimages.org) 上的 'upload file' link 不是输入字段。

Selenium webdriver for Python 允许通过使用 send_keys 方法上传文件按钮是一个输入字段。

预期(send_keys 工作)

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

实际找到(send_keys不工作的原因)

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

如何解决问题?

send_keys 的方法不适用于该网站,因为它没有 webdriver 所需的输入元素。因此,需要使用替代方法。

网站-https://postimages.org/nl/支持 'copy + paste' 上传图片的功能。

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

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

第二步:使用Webdriver点击网页

第三步:使用webdriver发送'CTRL + V'到网页。 验证图像是否已上传。