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

本地通过的文件上传场景在EC2部署的Jenkins上失败求助

解决EC2 Jenkins环境下Selenium文件上传路径问题

问题分析

从报错信息可见,系统尝试访问路径/var/lib/jenkins/workspace/HE_HQ_Automaton/src/test.Files/putty.exe但未找到文件,核心问题是文件实际存储路径与代码拼接路径不匹配,或文件未被正确同步到Jenkins工作目录。

排查与解决步骤

1. 确认文件是否存在于Jenkins工作目录

登录EC2实例,直接检查目标路径的文件状态:

ls -l /var/lib/jenkins/workspace/HE_HQ_Automaton/src/test.Files/
  • 若文件不存在:
    • 检查代码仓库中src/test.Files/目录是否包含目标文件,确保版本控制工具(如Git)已提交并推送该文件。
    • 查看Jenkins构建日志,确认拉取代码时该文件是否被成功下载到工作目录。

2. 修正路径拼接逻辑

代码中使用System.getProperty("user.dir")获取工作目录,在Jenkins环境下该值即为/var/lib/jenkins/workspace/HE_HQ_Automaton/,需注意以下细节:

  • 检查目录/文件名拼写:Linux系统路径区分大小写,确认test.Files、BUG PnUMBER CHAR.png的拼写与实际文件完全一致。
  • 替换硬编码路径分隔符:用File.separator代替/,保证跨平台兼容:
    public void sendPNGFileUpload() {
         Driver.wait(2);
         String filePath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "test.Files" + File.separator + "BUG PnUMBER CHAR.png";
         driver.findElement(chooseFileButton).sendKeys(filePath);
         Driver.wait(2);
     }
    
  • 更推荐使用Paths类构建路径,避免拼接错误:
    import java.nio.file.Paths;
    
    public void sendPNGFileUpload() {
         Driver.wait(2);
         String filePath = Paths.get(System.getProperty("user.dir"), "src", "test.Files", "BUG PnUMBER CHAR.png").toString();
         driver.findElement(chooseFileButton).sendKeys(filePath);
         Driver.wait(2);
     }
    

3. 检查Jenkins用户权限

Jenkins运行用户(通常为jenkins)需具备目标文件的访问权限:

sudo -u jenkins ls -l /var/lib/jenkins/workspace/HE_HQ_Automaton/src/test.Files/BUG\ PnUMBER\ CHAR.png

若权限不足,修改文件权限:

chmod 644 /var/lib/jenkins/workspace/HE_HQ_Automaton/src/test.Files/BUG\ PnUMBER\ CHAR.png

4. 绝对路径测试验证

若以上方法无效,可直接使用绝对路径测试,确认文件是否可被访问:

public void sendPNGFileUpload() {
     Driver.wait(2);
     driver.findElement(chooseFileButton).sendKeys("/var/lib/jenkins/workspace/HE_HQ_Automaton/src/test.Files/BUG PnUMBER CHAR.png");
     Driver.wait(2);
 }

如果此方法生效,说明System.getProperty("user.dir")取值不符合预期,可在代码中打印该值确认:

System.out.println("当前工作目录:" + System.getProperty("user.dir"));

查看Jenkins构建日志的输出,核对工作目录是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:50:15