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

Go语言用Selenium上传文件报错:文件未找到,求解决方案

解决Go Selenium文件上传"File not found"错误

针对你遇到的问题,核心原因是远程Selenium服务器无法直接访问本地文件,Go的Selenium库其实支持本地文件检测功能,只是需要手动配置,以下是具体解决步骤:

1. 配置LocalFileDetector

初始化RemoteWebDriver后,必须启用本地文件检测器,Selenium会自动将本地文件上传到远程服务器:

caps := selenium.Capabilities{"browserName": "chrome"}
driver, err := selenium.NewRemote(caps, "http://localhost:4444/wd/hub")
if err != nil {
    log.Fatal(err)
}
defer driver.Quit()

// 关键步骤:启用本地文件检测器
driver.SetFileDetector(selenium.LocalFileDetector{})

2. 使用文件绝对路径

远程服务器的工作目录和本地不一致,相对路径会导致文件找不到,建议先将路径转换为绝对路径:

import "path/filepath"

// ... 你的元素查找代码 ...

absPath, err := filepath.Abs(path)
if err != nil {
    return fmt.Errorf("无法获取文件绝对路径: %w", err)
}

if err = element.SendKeys(absPath); err != nil {
    return fmt.Errorf(errors.Selenium.SendKeysFailure+"\n%w", err)
}

3. 检查库版本

确保使用最新版的github.com/tebeka/selenium库,旧版本可能没有SetFileDetector方法,执行更新命令:

go get -u github.com/tebeka/selenium

额外验证点

  • 提前检查本地文件是否存在,避免无效路径:
    if _, err := os.Stat(absPath); os.IsNotExist(err) {
        return fmt.Errorf("本地文件不存在: %s", absPath)
    }
    
  • 确认file类型input元素定位准确,没有定位到其他无关元素。

内容的提问来源于stack exchange,提问作者Pedro Miguel C. Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:40:35