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

使用Python Selenium自动化IRESPred网页时无法点击文件上传按钮

解决Selenium文件上传的InvalidArgumentException问题

我来帮你搞定这个问题!你遇到的InvalidArgumentException其实是因为Selenium无法直接操控系统级的文件选择弹窗,而且直接点击type="file"的input元素时,浏览器的安全机制可能会触发异常。咱们换个更可靠的方式——直接给input元素传递文件路径,完全不需要点击它弹出窗口。

正确的代码实现

from selenium import webdriver
import time

driver = webdriver.Edge(r"C:\Users\Amardeep\Downloads\msedgedriver.exe")
driver.maximize_window()
driver.get("http://bioinfo.unipune.ac.in/IRESPred/IRESPred.html")
time.sleep(2)

# 定位文件上传input元素,直接传入本地文件的绝对路径
file_input = driver.find_element_by_name("fileToUpload")
# 替换成你实际要上传的文件的绝对路径
file_input.send_keys(r"C:\Your\File\Path\example.fasta")

为什么这个方法有效?

<input type="file">是HTML专门用于文件上传的元素,它原生支持通过send_keys()方法接收本地文件的绝对路径,这也是Selenium官方推荐的文件上传方案。这种方式绕过了系统弹窗的交互,既稳定又不会触发浏览器的安全限制。

进阶优化:用显式等待替代time.sleep

如果页面加载速度不稳定,time.sleep()可能会导致元素还没加载完成就执行操作,建议改用显式等待,它会等待元素出现后再执行操作,可靠性更高:

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

driver = webdriver.Edge(r"C:\Users\Amardeep\Downloads\msedgedriver.exe")
driver.maximize_window()
driver.get("http://bioinfo.unipune.ac.in/IRESPred/IRESPred.html")

# 等待最多10秒,直到文件上传元素出现
file_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, "fileToUpload"))
)
file_input.send_keys(r"C:\Your\File\Path\example.fasta")

注意事项

  • 必须传入文件的绝对路径,相对路径可能会导致找不到文件的问题
  • 确保你的文件路径格式正确,Windows系统下可以用原始字符串(前面加r)避免转义字符问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:47:49