You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium通过Href链接上传文件报错求助

解决Selenium文件上传的AttributeError问题

首先,你遇到的AttributeError: 'WebDriver' object has no attribute 'send_keys'是因为send_keys是网页元素(WebElement)的方法,不是WebDriver对象的方法,不能直接用driver.send_keys调用。但更核心的问题是:你点击a标签后弹出的是操作系统级别的文件选择窗口,Selenium根本没法直接控制这个窗口。

正确的做法是绕过这个弹窗,直接操作页面中隐藏的input[type="file"]元素——这是网页文件上传的标准实现,大部分网站的上传按钮(比如你看到的a标签)只是触发这个input的点击事件,实际的文件上传逻辑由这个input处理。

具体步骤:

  1. 定位到页面中的input[type="file"]元素,通常它会被设置为隐藏(比如display: none),但Selenium依然可以定位到它。
  2. 直接对这个input元素调用send_keys(file_path),传入你的本地文件路径,不需要点击那个a标签。

修正后的代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("你的目标网站URL")

# 定位隐藏的文件上传input元素
upload_input = driver.find_element(By.CSS_SELECTOR, "input[type='file']")
# 直接传入文件路径
upload_input.send_keys("你的本地文件绝对路径,比如C:/test/upload.txt")

补充说明:

  • 如果找不到这个input元素,可以打开浏览器开发者工具(F12),在页面中搜索input[type="file"],或者在点击a标签时观察元素变化,找到对应的input。
  • 有些网站会给input设置特定的id或class,你可以根据实际情况调整定位器(比如用XPATH://input[@type='file'])。

内容的提问来源于stack exchange,提问作者RA.IBOY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 20:21:01