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'到网页。
验证图像是否已上传。
所以我尝试使用 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'到网页。 验证图像是否已上传。