Selenium Grid 如何使用 Java 从中获取文件?

Selenium Grid how to get file from it with Java?

我在具有 IP 的远程计算机上安装了 Selenium Grid。我的一个测试用例必须下载文件,断言我想比较下载文件的名称,同样在另一个测试用例中,我必须将文件从 Windows 导入应用程序。 如何在 Java 中做到这一点? Selenium Grid 在 Windows Server 2008 上。

据我所知,单独使用硒是不可能的。您可能能够获取浏览器日志,但我所做的是启用对共享服务器的文件访问并检查文件是否已下载到那里。首先我设置Chrome的下载目录:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "\remote-ip\path\to\download\directory");
options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://gridhubhost:4444/wd/hub"), capabilities);

然后在测试使浏览器下载文件后,我检查远程服务器上的文件系统:

File downloadedFile = new File("\remote-ip\path\to\download\directory\file");
assertEquals(downloadedFile.getName(), "expected-name");

[编辑]:您最好断言文件存在,例如:

assertTrue(downloadedFile.exists());

您可以检查路径中是否存在下载的文件使用java.io.File:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
   Sustem.out.printLn("File is downloaded");
}

另外,如果你想导入那么你必须检查是否存在用于文件导入的可编辑输入字段,如果有则可以直接使用如下所示的sendkeys:

  driver.findElement(By.xpath("upload input path")).sendKeys("C:/Users/1.pdf");

否则,如果上传 link 打开 windows 对话框,您将不得不使用 AutoIt 或 Robot class。