当前位置: 首页 > 知识库问答 >
问题:

使用Selenium Grid时,如何从Hub机器访问节点机器中下载的文件?

云焱
2023-03-14

以下是我的设想:

我使用的是Selenium Grid的概念,我们从Hub(机器1)触发测试脚本执行,并在节点机器(机器2)的chrome浏览器上执行脚本。在我的一个测试脚本中,当我点击导出按钮时,它会在节点机器(即机器2)的默认下载文件夹中下载一个excel文件

问题:在脚本中,我需要进一步读取下载文件的内容,但由于下载的文件位于节点计算机中,脚本无法从中心访问它。

那么,我们如何从Hub机器访问节点机器中下载的文件呢?

共有1个答案

毕浩渺
2023-03-14

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

>

  • Java:

    driver.setFileDetector(new LocalFileDetector());
    

    蟒蛇:

    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 Grid上运行测试,那么需要让远程驱动程序知道需要上传的文件位于本地计算机上,而不是远程计算机上。在这些情况下,要将文件从客户端计算机上载到远程服务器,WebDriver可以在运行时自动将文件从本地计算机传输到远程web服务器。您可以使用以下代码块:

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

    在Selenium Grid上运行测试时选择和上载文件

  •  类似资料:
    • 我正在使用 Jenkins Build Flow 插件来实现并行化。Groovy DSL执行某些文件操作。即使选项设置为在特定从服务器上运行作业,DSL也会在主服务器上运行。这不是故意的。 有人能告诉我如何限制DSL在指定的从机上运行吗?即使有一种方法可以通过DSL访问从属文件系统,也应该有效。 一般来说,我们如何使用Groovy从主机访问节点从Jenkins文件? 工作区位于从属节点上,但是当我

    • 我有一个用硒写的测试用例(我使用自动处理浏览器的文件下载窗口),我的代码在集线器机器上,远程节点浏览器处理下载。现在我想把下载的文件放在集线器机器上名为“输出”的代码工作区文件夹中。这可能吗?如果是,怎么做?

    • 问题内容: 我是Docker的新手。 我运行了一个10节点的图像,并在运行的容器中克隆了一个存储库,运行了使用文件监视程序启动服务器的应用程序。我需要访问容器内的代码库,并在Windows主机上运行的IDE中打开它。如果完成了,那么我还希望当我在IDE中更改文件时,这些更改会在容器中引起文件监视程序。 任何帮助表示赞赏。谢谢, 问题答案: 您正在寻找的概念称为卷。您需要启动一个容器并在其中安装主机

    • 问题内容: 我正在boot2docker 1.3.1下运行。 我有一个Docker容器通过运行Web服务器。 如果我连接到该容器,则可以使用浏览该网站,以便知道服务器正在运行。 我用以下容器运行容器: 它具有以下详细信息: 我以为可以访问,从托管人访问该网站。 这是行不通的。我只是在Chrome中看到“正在连接…”,却一无所获。 我究竟做错了什么? 问题答案: 好吧,愚蠢的我,我在boot2doc

    • 我在本地机器(Mac)上工作,其中有一个名为sqlvm的遗留虚拟机(这意味着我可以通过http://sqlvm:从本地主机访问这个虚拟机)。现在,我在应该连接到vm的同一个本地主机(我的Mac)中设置了几个docker容器(使用docker-compose)。< code>pymysql会引发一个异常: 如何将外部的“sqlvm”公开给内部 Docker 网络? 编辑:我尝试在yml文件中为相关容

    • 一些秘密需要通过PODS获取,秘密存储在GCP秘密管理器中,什么是安全有效的方法来获取pod中的秘密? 谢谢你!