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

使用Python/Selenium导航网站后,如何指定文件路径完成上传文件的打开操作?

解决Selenium批量上传CSV文件的问题

你之前用filedialog和subprocess的思路不对——Selenium无法直接控制操作系统的文件选择对话框,正确的做法是直接操作网页上的文件上传控件:

核心方法:操作网页的<input type="file">元素

绝大多数网站的文件上传功能都是基于标准的<input type="file">控件实现的,不管它看起来是自定义按钮还是其他样式,你都可以直接给这个元素传入文件路径,无需手动点击系统弹窗的「打开」按钮。

具体步骤与代码示例

  1. 定位上传控件
    用Selenium的定位方法(ID、NAME、XPATH等)找到页面中的文件上传input元素:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    # 初始化浏览器并导航到上传页面
    driver = webdriver.Chrome()
    driver.get("你的上传页面URL")
    
    # 定位上传控件(根据实际页面调整定位方式,这里以ID为例)
    upload_input = driver.find_element(By.ID, "file-upload")
    
  2. 单个文件上传
    直接给控件传入文件的绝对路径:

    # 注意路径要用双反斜杠或者原始字符串
    upload_input.send_keys(r"C:\Users\MyFolder\my_file.csv")
    
  3. 批量文件上传
    如果控件支持批量上传(带有multiple属性),将多个文件路径用换行符拼接后传入:

    file_list = [
        r"C:\Users\MyFolder\file1.csv",
        r"C:\Users\MyFolder\file2.csv",
        r"C:\Users\MyFolder\file3.csv"
    ]
    # 拼接为换行分隔的字符串
    upload_input.send_keys("\n".join(file_list))
    
  4. 触发上传(如果需要)
    部分网站需要点击「上传」按钮确认,定位后点击即可:

    submit_btn = driver.find_element(By.XPATH, "//button[contains(text(), '上传')]")
    submit_btn.click()
    

特殊情况处理

如果网站使用了非标准的上传控件(点击后直接弹出系统文件选择框,找不到对应的<input type="file">),可以用PyAutoGUI模拟键盘输入路径后回车:

import pyautogui
import time

# 先点击页面上的上传按钮,弹出系统对话框
driver.find_element(By.XPATH, "//*[text()='选择文件']").click()
time.sleep(1)  # 等待对话框弹出

# 输入文件路径(批量上传可输入多个路径,用分号分隔,根据系统情况调整)
pyautogui.typewrite(r"C:\Users\MyFolder\my_file.csv")
pyautogui.press("enter")  # 模拟点击「打开」按钮

这种方法稳定性较差,优先推荐操作<input type="file">的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:54:40