如何检查远程Selenium Grid集线器是否正在执行测试?

时间:2017-06-16 14:14:51

标签: selenium selenium-webdriver selenium-grid

我们目前正在为我们的手动QA团队构建一个Web界面,以便能够运行Selenium测试,这些测试通过Selenium Grid在远程计算机上执行。

我正在寻找一些方法来远程检查Selenium Grid是否当前执行任何测试,这样我就可以将从Web界面发送到Grid的任何其他运行排队,直到上一次测试执行完成。这将确保我们避免过多的同时测试运行导致网格过载。

我搜索了StackOverflow并阅读了Selenium文档以查看是否有任何可用于检查此命令的命令,但是空出来了。

2 个答案:

答案 0 :(得分:6)

您可以在网格控制台中查看此详细信息。例如,如果您在本地计算机上运行集线器,则控制台URL为http://localhost:4444/grid/console。如果您在另一台计算机上运行网格集线器,则在控制台URL中将本地主机替换为网格集线器计算机的IP或主机名。

有很多方法可以了解它。

  1. 如果任何节点被测试执行占用,则浏览器图标将显示为灰色。(有时,您必须刷新页面才能获得状态)。

  2. 否则,如果您将鼠标悬停在控制台中的任何浏览器图标上,则会显示会话ID,如果它正在执行任何测试。

  3. 在selenium hub命令行窗口日志中。它会在频繁的时间间隔内列出可用的节点。

  4. enter image description here

答案 1 :(得分:1)

您不需要自己管理测试队列。 Selenium网格和节点将其安装到位。因此,为了减少每个节点上的过载,可以使用一些配置。我们有maxSessionmaxInstance个参数。

maxSession - 节点上可以并行运行的最大浏览器数 maxInstance - 可以在节点上并行运行的相同浏览器实例的最大数量。

F.e。 maxSession = 3,maxInstance = 2.你可以拥有2个firefox + 1 chrome

你没有提到你的硒驱动版本是什么。所以我们说它是最新的3.x.x。您可以创建node-config.json文件并存储此参数。

{
    "capabilities": [
        {
            "browserName": "chrome",
            "maxInstances": "2",#settings per browser
        }
    ],
    "maxSession": "3", #settings per node
}

启动节点:

java -jar /path_to_driver/serve.jar -role node -hub HUB_ADDRESS -nodeConfig /path_to_node_config/node-config.json

因此,当您想要运行新测试时,网格将注册它并等待一个空闲节点。所以它可以为你保留一个堆栈

此外,您可以使用bash命令parallel并创建测试数组,然后以并行方式运行它。让我们同时说5个工作岗位。

parallel --jobs 5 -k --gnu ::: "${arrayToRun[@]}"

有关Selenium configuration的更多信息 有关parallel

中的运行测试的更多信息