java—在使用selenium网格时,如何从中心机访问节点机中下载的文件?

uqxowvwt  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(386)

以下是我的设想:
我使用的是selenium网格概念,我们从hub(machine-1)触发测试脚本执行,并在节点machine(machine-2)的chrome浏览器上触发脚本执行。在我的一个测试脚本中,当我单击“导出”按钮时,它会在节点machine(即machine-2)的默认下载文件夹中下载一个excel文件
问题:在脚本中,我需要进一步读取下载文件的内容,但由于下载的文件驻留在节点计算机中,脚本无法从hub访问它。
那么,我们如何从中心机访问节点机中下载的文件呢?

46qrfjad

46qrfjad1#

本地文件检测器

本地文件检测器允许将文件从客户机传输到远程服务器。如果测试需要将文件上载到web应用程序,远程webdriver可以在运行时自动将文件从本地计算机传输到远程web服务器。这允许从运行测试的远程计算机上载文件。默认情况下不启用,可以按如下方式启用:
java 语:

driver.setFileDetector(new LocalFileDetector());

Python:

from selenium.webdriver.remote.file_detector import LocalFileDetector

driver.file_detector = LocalFileDetector()

c#:

var allowsDetection = this.driver as IAllowsFileDetection;
if (allowsDetection != null)
{
   allowsDetection.FileDetector = new LocalFileDetector();
}

这个用例

如果您在selenium网格上运行测试,那么您需要让远程驱动程序知道需要上载的文件驻留在本地计算机上,而不是远程计算机上。在这些情况下,要将文件从客户端计算机上载到远程服务器,webdriver可以在运行时自动将文件从本地计算机传输到远程web服务器您可以使用以下代码块:

WebElement addFile = driver.findElement(By.xpath("//input[@type='file']"));
((RemoteWebElement)addFile).setFileDetector(new LocalFileDetector());
addFile.sendKeys("C:\\daten\\test2.xml");

奥特罗

在selenium网格上运行测试时选择和上载文件

相关问题