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

Python使用Selenium上传文件时如何避免弹出系统文件选择窗口

Selenium文件上传功能实现方案

方案1:直接通过Selenium操作文件上传控件(推荐,无需处理系统弹窗)

这是最稳定的方案,不需要操作系统级的文件资源管理器窗口,核心是定位正确的DOM元素:

  • 不要定位页面上可见的、点击会弹出窗口的「上传按钮」,要找该按钮关联的隐藏<input type="file">元素,Selenium的send_keys传入文件路径的方法仅对该类型元素生效
  • 修正文件路径的转义问题:Windows系统下路径中的反斜杠是Python转义符,需要用原始字符串或者双反斜杠处理,否则路径会识别错误

修正后的代码示例:

# 先定位type为file的input元素,不要定位错可见的上传按钮
upload_input = driver.find_element_by_xpath("//input[@type='file']")
# 路径前加r声明为原始字符串,避免转义符识别异常
upload_input.send_keys(r'C:\Users\bodig\Downloads\image1.jpg')

如果该input元素被设置为隐藏不可见,可以先执行JS修改其可见性再操作:

upload_input = driver.find_element_by_xpath("//input[@type='file']")
# 执行JS移除元素隐藏属性
driver.execute_script("arguments[0].style.display = 'block';", upload_input)
upload_input.send_keys(r'C:\Users\bodig\Downloads\image1.jpg')

方案2:通过桌面自动化工具操作文件选择窗口

如果页面上传逻辑经过特殊封装,无法直接定位到input元素,可以使用PyAutoGUI这类桌面自动化工具操作弹窗,该方案需要保证操作时文件选择窗口处于前台焦点:

import pyautogui
import time

# 点击页面上传按钮调出文件选择窗口
driver.find_element_by_xpath(upload1xpath).click()
# 等待窗口加载完成
time.sleep(1)
# 输入文件完整路径
pyautogui.write(r'C:\Users\bodig\Downloads\image1.jpg')
# 按下回车确认选择完成上传
pyautogui.press('enter')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:06:03