我有以下使用硒上传图像的方法。
public static void uploadSampleImage(StaticSeleniumDriver driver)
{
File file = new File(System.getProperty("user.dir") + "/resources/images/" + SAMPLE_DOCUMENT_FILE_NAME);
Utils.Log("file exists: " + file.exists());
String imagePath = file.getAbsolutePath();
WebElement input = driver.findElement(By.name("file"));
input.sendKeys(imagePath);
}
这是馈送文件路径(like explained in Guru99 tutorial)来上传文件的标准方法。
org.openqa.selenium.InvalidArgumentException:无效参数:File 找不到:/usr/src/app/resources/images/image2.png (会议信息:chrome = 72.0.3626.81) (驱动程序信息:chromedriver = 2.46.628388(4a34a70827ac54148e092aafb70504c4ea7ae926),平台= Linux 4.9.125-linuxkit x86_64)(警告:服务器未提供任何堆栈跟踪信息)
这很奇怪,因为我确定文件存在于给定目录中(在上面的方法中,我正在检查文件是否存在,并且日志清楚地确认了这一点)
任何建议都将受到欢迎,谢谢
答案 0 :(得分:2)
对于RemoteWebDriver
,您必须设置文件检测器driver.setFileDetector(new LocalFileDetector());
。
您的代码:
public static void uploadSampleImage(StaticSeleniumDriver driver)
{
driver.setFileDetector(new LocalFileDetector());
File file = new File(System.getProperty("user.dir") + "/resources/images/" + SAMPLE_DOCUMENT_FILE_NAME);
Utils.Log("file exists: " + file.exists());
String imagePath = file.getAbsolutePath();
WebElement input = driver.findElement(By.name("file"));
input.sendKeys(imagePath);
}