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

Python-Selenium无File类型控件时如何实现文件上传?

Selenium 图片上传解决方案(针对无File控件场景)

尝试恢复send_keys方法的可行性

很多网站的文件上传功能会把原生<input type="file">控件隐藏,而非直接用按钮触发上传。你可以按以下步骤操作:

  1. 定位页面中隐藏的input[type="file"]元素(若控件嵌套在iframe内,需先切换iframe上下文)
  2. 通过JavaScript修改控件可见性,再调用send_keys:
    from selenium.webdriver.common.by import By
    
    # 定位隐藏的文件输入控件
    file_input = driver.find_element(By.CSS_SELECTOR, 'input[type="file"]')
    # 显示控件(若被CSS隐藏)
    driver.execute_script("arguments[0].style.display = 'block';", file_input)
    # 直接传入文件绝对路径
    file_input.send_keys("/absolute/path/to/your/image.jpg")
    

如果找不到该控件,可在浏览器开发者工具的Elements面板搜索input[type="file"],确认是否存在或被嵌套在其他容器中。

替代自动化方案

1. PyAutoGUI 模拟桌面操作

纯Python实现GUI自动化,无需依赖外部编译工具:

import pyautogui
import time

# 点击上传按钮
upload_btn = driver.find_element(By.CSS_SELECTOR, '.Polaris-Button--primary_7k9zs')
upload_btn.click()
time.sleep(2)  # 等待文件选择窗口弹出(根据实际加载时间调整)

# 输入文件绝对路径
pyautogui.write("/absolute/path/to/your/image.jpg")
# 回车确认选择
pyautogui.press('enter')

注意:运行时需确保文件选择窗口处于前台,且路径输入框已自动聚焦。

2. 剪贴板粘贴路径

部分系统的文件选择窗口支持粘贴路径,可结合剪贴板工具实现:

import pyperclip
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

upload_btn.click()
time.sleep(2)

# 复制路径到剪贴板
pyperclip.copy("/absolute/path/to/your/image.jpg")
# 粘贴并确认
actions = ActionChains(driver)
actions.send_keys(Keys.CONTROL, 'v').perform()
actions.send_keys(Keys.ENTER).perform()

3. 直接调用上传API(最优解)

如果前端交互限制太多,可跳过页面控件,直接模拟上传请求:

  1. 用浏览器F12的Network面板,手动上传一次图片,捕获POST请求的URL、请求头和参数
  2. 使用requests库构造请求上传:
    import requests
    
    upload_url = "https://target-site.com/api/upload-endpoint"
    # 根据捕获的请求头添加必要参数(如认证Token)
    headers = {"Authorization": "Bearer your-auth-token"}
    # 构造文件上传参数
    files = {"file": open("/absolute/path/to/your/image.jpg", "rb")}
    
    response = requests.post(upload_url, headers=headers, files=files)
    # 验证上传结果
    if response.status_code == 200:
        print("上传成功")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:25:11