Java Selenium用sendKeys传文件遇InvalidArgumentException求助
解决Java Selenium sendKeys上传文件时的文件找不到错误
针对你遇到的org.openqa.selenium.InvalidArgumentException: invalid argument: File not found错误,以下是几种排查和解决方法:
1. 检查文件名/路径拼写
仔细核对路径中的每一部分,尤其是文件名:你提供的路径里是MarketReaserch34.jpeg,注意是否存在拼写错误(比如是否应为MarketResearch34.jpeg,少了字母a)。手动在文件资源管理器中粘贴路径,确认文件实际存在。
2. 用Java文件类生成可靠路径
避免手动拼接字符串带来的转义或空格问题,使用Java的File或Paths类生成绝对路径:
// 使用File类 File uploadFile = new File("C:\\Users\\VK32827\\Updated RCL Project\\research-gtf-RLC\\DataFilesToUpload\\MarketReaserch34.jpeg"); uploadElement.sendKeys(uploadFile.getAbsolutePath()); // 或者使用Paths类(Java 7+) Path filePath = Paths.get("C:", "Users", "VK32827", "Updated RCL Project", "research-gtf-RLC", "DataFilesToUpload", "MarketReaserch34.jpeg"); uploadElement.sendKeys(filePath.toString());
3. 处理RemoteWebDriver的跨节点文件上传
如果使用RemoteWebDriver(如Selenium Grid),本地路径在远程节点上无法直接访问。需设置LocalFileDetector让Selenium自动上传本地文件到远程节点:
((RemoteWebDriver) driver).setFileDetector(new LocalFileDetector()); // 之后再执行sendKeys上传 uploadElement.sendKeys(absoluteFilePath);
4. 验证文件权限与存在性
- 确认文件未被移动、删除或重命名
- 确保运行测试的用户账号拥有该文件的读取权限
- 尝试复制文件到无空格、无特殊字符的路径(如
C:\temp\test.jpeg),再测试上传
5. 升级Selenium版本
你当前使用的是4.0.0-alpha-5,这是早期测试版本,存在已知bug。建议升级到最新稳定版(如4.18.x),路径处理逻辑会更可靠。
内容的提问来源于stack exchange,提问作者Vidhyasagar Kothale
相关产品推荐
相关产品推荐

