硒上传文件:找不到文件[docker]

时间:2019-02-21 15:20:03

标签: java selenium docker

我有以下使用硒上传图像的方法。

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)来上传文件的标准方法。

  1. 在Windows上进行本地测试时,效果很好
  2. 在docker容器(linux)中运行时不起作用,出现此错误:
  

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)(警告:服务器未提供任何堆栈跟踪信息)

这很奇怪,因为我确定文件存在于给定目录中(在上面的方法中,我正在检查文件是否存在,并且日志清楚地确认了这一点)

enter image description here

任何建议都将受到欢迎,谢谢

1 个答案:

答案 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);
}