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

如何用Selenium上传文件?视频上传脚本无报错但未生效

Selenium视频上传失败排查与解决

核心问题分析

你当前的代码大概率定位到了错误的<input>元素——页面中通常存在多个input标签,但只有**type="file"**的input才支持通过send_keys上传文件。用By.TAG_NAME定位会匹配所有input,选中非上传用元素后就会出现无报错但文件未上传的情况。

具体解决步骤

  1. 精准定位上传专用input
    直接通过CSS选择器定位type="file"的input,这是最可靠的方式:
# 用presence_of_element_located更适配文件上传元素(很多网站会隐藏它)
file_input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='file']")))
# 直接发送文件路径,无需修改visibility(隐藏的file input依然支持send_keys)
file_input.send_keys(r"C:\Users\NIKITA\Desktop\vk_clips\testvid.mp4")

注意:路径用原始字符串r""可避免转义问题,比斜杠写法更稳妥。

  1. 解决XPath超时问题
    若坚持用XPath,需确保表达式精准指向type="file"的input:
file_input = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@type='file']")))

超时还可能是以下原因:

  • 元素嵌套在iframe中:先切换到iframe再定位
    # 按id/name/索引切换iframe
    browser.switch_to.frame("upload_frame")
    # 定位并操作元素...
    # 操作完成后切回主文档
    browser.switch_to.default_content()
    
  • 页面加载慢:延长等待超时时间,比如WebDriverWait(browser, 15)
  1. 额外排查点
  • 确认文件路径正确,文件本身可正常打开
  • 若页面有多个type="file"的input,需结合父元素的class/id进一步缩小范围,比如:
    div.upload-container input[type='file']
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:01:02