所以我尝试使用 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("演示/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 中
返回 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 中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互
(会话信息:chrome=84.0.4147.89)
问题的根本原因是网站 (postimages.org) 上的“上传文件”链接不是输入字段。
Selenium Webdriver for Python 允许通过使用以下方式上传文件发送密钥仅当上传按钮是输入字段时才使用此方法。
预期(为了使 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/ https://postimages.org/nl/支持
用于上传图像的“复制+粘贴”功能。
这可以在 python 中完成,如下所示:
Step 1:将图像复制到系统剪贴板
Step 2:使用Webdriver点击网页。
Step 3:使用 webdriver 将“CTRL + V”发送到网页。
验证图像是否已上传。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)