Java 下载文件(在节点上使用chrome)并将其保存在服务器文件系统中

Java 下载文件(在节点上使用chrome)并将其保存在服务器文件系统中,java,google-chrome,selenium,Java,Google Chrome,Selenium,我必须测试当点击链接时是否下载了PDF文件。 我已经设置了一个默认文件夹,以便能够使用selenium下载这些文件,但我需要将这些文件保存到服务器而不是节点 chromePrefs.put("download.default_directory", "C:\\SOIF\\Temp\\downloads"); options.setExperimentalOption("prefs", chromePrefs); 我尝试使用: ((RemoteWebDriver) getWebDriver())

我必须测试当点击链接时是否下载了PDF文件。 我已经设置了一个默认文件夹,以便能够使用selenium下载这些文件,但我需要将这些文件保存到服务器而不是节点

chromePrefs.put("download.default_directory", "C:\\SOIF\\Temp\\downloads");
options.setExperimentalOption("prefs", chromePrefs);
我尝试使用:

((RemoteWebDriver) getWebDriver()).setFileDetector(new LocalFileDetector())
但这仅在我尝试从带有节点的服务器上载文件时有效

chromePrefs.put("download.default_directory", "C:\\SOIF\\Temp\\downloads");
options.setExperimentalOption("prefs", chromePrefs);

如果不在服务器上设置默认下载文件夹,这是否可行?

您需要共享服务器上的文件夹。然后使用映射驱动器号映射所有节点,一旦映射完成。您可以在所有下载测试中使用该路径,也可以在下载文件时使用该路径进行测试

Z:
是最常用的一种,但您可以将其与任何其他字母驱动程序一起使用。然后只使用这些路径

例如提到的@DebanjanB
“Z:\\shared\u server\u path\\SOIF\\Temp\\downloads”

编辑-1

如果您需要为每个测试用例单独下载,那么您可以选择执行以下操作。在启动Webdriver之前,生成UUID字符串并将其附加到下载文件夹中

`"Z:\\shared_server_path\\SOIF\\Temp\\downloads\\fd411526-e3aa-43b1-a351-e484da4508d9"`
创建此文件夹并启动webdriver,将其作为下载目录。当测试完成时,您总是可以知道测试用例的名称。创建目录

“Z:\\shared\u server\u path\\SOIF\\Temp\\downloads\\TestCase1”


并将文件移动到该文件夹。这是我能想到的可行解决方案

您需要从服务器共享一个文件夹。然后使用映射驱动器号映射所有节点,一旦映射完成。您可以在所有下载测试中使用该路径,也可以在下载文件时使用该路径进行测试

Z:
是最常用的一种,但您可以将其与任何其他字母驱动程序一起使用。然后只使用这些路径

例如提到的@DebanjanB
“Z:\\shared\u server\u path\\SOIF\\Temp\\downloads”

编辑-1

如果您需要为每个测试用例单独下载,那么您可以选择执行以下操作。在启动Webdriver之前,生成UUID字符串并将其附加到下载文件夹中

`"Z:\\shared_server_path\\SOIF\\Temp\\downloads\\fd411526-e3aa-43b1-a351-e484da4508d9"`
创建此文件夹并启动webdriver,将其作为下载目录。当测试完成时,您总是可以知道测试用例的名称。创建目录

“Z:\\shared\u server\u path\\SOIF\\Temp\\downloads\\TestCase1”



并将文件移动到该文件夹。这是一个可行的解决方案,我能想到的节点也是windows?是的,一切都是windows你能试试
“下载.默认目录”,“Z:\\shared\u server\u path\\SOIF\\Temp\\downloads”
是的,我可以使用一个新的工作驱动器(甚至不需要字母),但这不是我想要的,我想把它保存在服务器上(因为我有acceptance、devs、…服务器,所以将其保存到同一目录没有任何意义。我的java后端运行*节点的服务器也是windows?是的,一切都是windows您可以尝试
“下载.默认目录”,“Z:\\shared\u server\u path\\SOIF\\Temp\\downloads”
是的,我可以使用NewWork驱动器(甚至不需要字母)但这不是我想要的,我想把它保存在服务器上(因为我有acceptance,devs,…服务器,将其保存到同一个目录没有任何意义。我的java后端正在运行的服务器*是的,这是我尝试的解决方案…但它不是最佳的,因为我需要为每个测试用例指定一个特定的文件夹,而我在创建webdriver时没有这些信息。我认为你不能更改capabi没有创建新的WebDriver,这就是为什么我试图有一个更干净的解决方案。谢谢,我会尝试,似乎可行,而且比重新设计我的WebDriver逻辑更容易。现在我有另一个问题,无法从WebDriver获取该信息。Capabilities中没有download.default\u目录为什么要从driver?Y获取值您是否设置了它以便在代码中包含值?编辑:我找到了一个解决方法。我转到chrome://settings 并在那里找到选项值。旧消息:我可以,但这将很困难(我通过WebDriverFactory类获取我的webdrivers,其中设置了所有配置文件和选项).但如果其中一些设置是随机的,如果我不存储它,我就无法将其取回(因为功能和DesiredCapabilities是奇怪的类)是的,这是我尝试的解决方案…但它不是最优的,因为我需要为每个测试用例指定一个特定的文件夹,而我在创建webdriver时没有这些信息。我认为如果不创建新的webdriver,您无法更改功能。这就是为什么我试图获得一个更干净的解决方案。谢谢,我会尝试,看起来可行而且比我们更简单使用我的webdriver逻辑现在我有另一个问题,无法从webdriver获取该信息。Capabilities中没有下载。默认目录。\u为什么要从driver获取值?您设置了它,以便在代码中包含该值?编辑:我找到了一个解决方法。我转到chrome://settings 然后在那里找到选项值。old信息:我可以,但这会很困难(我通过一个WebDriverFactory类获取我的webdrivers,其中设置了所有配置文件和选项)。但是如果其中一些设置是随机的,如果我不存储它,我就无法取回它(因为功能和所需功能是奇怪的类)