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

如何使用Selenium Python结合给定脚本实现文件上传?

解决Selenium上传Google图片的问题

你当前的核心问题是选错了操作元素:你给一个<span>元素调用send_keys()是无效的,Selenium实现文件上传必须操作页面中type="file"的<input>元素——这是浏览器原生支持接收文件路径的唯一元素。

正确的实现步骤:

  • 不需要点击页面上的上传按钮(点击后会弹出系统级文件选择框,Selenium无法直接操作这个弹窗)
  • 直接找到页面中隐藏的type="file"输入框,对它调用send_keys()传入本地文件路径即可

修改后的完整代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Chrome()
browser.maximize_window()
wait = WebDriverWait(browser, 20)
browser.get('https://www.google.com/')

# 点击图片搜索入口
browser.find_element(By.XPATH, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[3]/div[3]/img').click()

# 等待并定位到隐藏的file input元素
file_input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'input[type="file"]')))
# 直接传入文件路径
file_input.send_keys('C:/Users/avu/caha.png')

补充说明:

如果遇到网站把type="file"元素设置为隐藏(比如display: none)的情况,可先通过JavaScript让元素可见再执行上传:

# 若元素隐藏,先执行JS让它可见
browser.execute_script("arguments[0].style.display = 'block';", file_input)
file_input.send_keys('C:/Users/avu/caha.png')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:40:51