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

使用Python Selenium通过button标签上传图片失败求助

解决Python Selenium上传图片无效的问题

核心问题

你现在的操作对象完全错了——不能直接给<button>元素用send_keys上传文件。网页里的上传按钮只是触发系统文件选择弹窗的交互控件,真正负责接收文件路径的是页面中隐藏的<input type="file">标签,只有这个元素支持send_keys传入文件路径。

代码里的两个关键错误

  1. 路径转义错误:replace('/', '\')会触发语法错误,Python里反斜杠需要转义成\\,或者直接用正斜杠(Selenium能识别),更省心的是用原始字符串写法。
  2. 操作对象错误:你一直在操作button元素,而不是实际处理文件上传的file input元素。

修正后的代码示例

# 用原始字符串写路径,彻底避免转义问题
PHOTO_PATH = r"C:\Users\tip\Desktop\proyecto_registro_minedu\input\72466985.jpg"
# 或者用正斜杠写法,不需要转义
# PHOTO_PATH = "C:/Users/tip/Desktop/proyecto_registro_minedu/input/72466985.jpg"

def select_element(driver, by, to_look, click = True):
    if click:
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((by, to_look))).click()
    else:
        return WebDriverWait(driver, 10).until(EC.element_to_be_clickable((by, to_look)))

# 上传图片:定位真正处理文件的input元素
# 选择器根据页面实际结构调整,基础款是input[type='file'],有特定class/id可以补充
file_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='file']")))
# 不管元素是否隐藏,直接执行send_keys即可,无需修改样式
file_input.send_keys(PHOTO_PATH)

额外提示

如果找不到对应的<input type="file">元素,打开浏览器开发者工具查看HTML结构:

  • 它可能嵌套在上传按钮的父元素容器内
  • 就算有display: none这类隐藏样式,Selenium依然可以对其执行send_keys,不需要额外修改样式

内容的提问来源于stack exchange,提问作者NaejF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:30:30