【问题标题】:Selenium webdriver python can't upload file - send_keys is throws ElementNotInteractableSelenium webdriver python无法上传文件-send_keys抛出ElementNotInteractable
【发布时间】:2020-11-26 02:05:41
【问题描述】:

所以我正在尝试使用 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, _execute 中的文件“/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py”,第 633 行 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 raise exception_class(message, screen, stacktrace)

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

【问题讨论】:

    标签: python selenium selenium-webdriver webdriver sendkeys


    【解决方案1】:

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

    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/ 支持 用于上传图片的“复制+粘贴”功能。

    这可以在python中完成如下:

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

    第2步:使用Webdriver点击网页。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      相关资源
      最近更新 更多