首页 > 解决方案 > Python selenium 使用 Windows 浏览器上传文件

问题描述

我正在使用 selenium 在 Python 中开发一个浏览器自动化项目。我正在尝试将图片上传到页面。我登录,转到页面,然后单击上传按钮。单击上传按钮后,将打开一个 Windows 文件浏览器,我必须在其中选择文件路径并点击 Windows 浏览器上的打开按钮。我正在寻找自动化这个过程。以下是正在发生的事情的图像,以澄清:

在此处输入图像描述

现在,我想给出文件路径并单击打开按钮。要单击“上传照片”按钮,我使用以下代码行:

browser.find_element_by_css_selector("a._3m1z").click()

我搜索了互联网,发现了 send_keys 函数。我尝试了以下方法:

browser.find_element_by_css_selector("a._3m1z").send_keys(os.getcwd()+"/image.png")

我收到以下错误:

  File "C:\Users\Umar\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
  (Session info: chrome=79.0.3945.88)

有人可以指出出了什么问题并指出我正确的方向吗?我正在使用 python 3.7

标签: python-3.xselenium

解决方案


Selenium 只能与浏览器交互。单击“上传照片”按钮后出现的窗口是 Windows 文件资源管理器,与浏览器无关。您必须使用PyWinAutoAutoIt等工具与文件资源管理器进行交互。

关于您要完成的工作,有一些解决方法:(1) 使用 API,(2)将文件路径直接传递到上传按钮等。取决于脚本的目的(自动化 UI测试,自动化您的某些任务等),其中一些替代方案比其他替代方案更好。


推荐阅读