从Saucelab下载selenium-server日志提示FileNotFoundException如何解决?
报错根因
java.io.FileNotFoundException异常包含两类核心触发原因:本地存储路径不合法/无写入权限,或是Saucelab侧日志资源不存在、鉴权失败导致无法拉取远程文件。
排查与解决步骤
1. 本地路径校验
- 确认传入的存储路径合法性:代码中
/target/saucelab为系统根目录下的绝对路径,绝大多数场景下该目录不存在,建议替换为当前项目的相对路径./target/saucelab(开头的.代表当前项目工作目录) - 确认目录存在性:
SauceREST.downloadLog方法不会自动创建多级目录,需预先手动创建目标目录,否则会抛出文件找不到异常 - 确认写入权限:校验运行Java程序的用户对目标目录是否有写入权限,系统根目录、管理员权限目录默认会限制普通用户写入
2. Saucelab参数校验
- 确认
username、accesskey和Saucelab后台配置的凭证完全一致,鉴权失败会导致接口返回404,被识别为文件不存在 - 确认传入的
sessionid为有效未过期的会话ID,已清理的历史会话日志无法拉取
3. 修复后代码示例
// 预创建目标存储目录 File logDir = new File("./target/saucelab"); if (!logDir.exists()) { logDir.mkdirs(); } SauceREST sauceREST = new SauceREST(username, accesskey); // 明确指定日志文件名,避免目录识别异常 String fullLogPath = new File(logDir, sessionid + "_selenium_server.log").getAbsolutePath(); sauceREST.downloadLog(sessionid, fullLogPath);
内容的提问来源于stack exchange,提问作者Madhu Sudhan
相关产品推荐
相关产品推荐

