【问题标题】:How to check if a remote Selenium Grid hub is executing tests?如何检查远程 Selenium Grid 集线器是否正在执行测试?
【发布时间】:2017-06-16 14:14:51
【问题描述】:

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

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

我搜索了 StackOverflow 并阅读了 Selenium 文档以查看是否有任何命令可用于检查此问题,但结果为空。

【问题讨论】:

  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
  • @JeffC “我搜索了 StackOverflow 并通读了 Selenium 文档,看看是否有任何命令可用于检查这一点,但结果为空。”这个问题的答案对我来说并不明显,并且以前在我能找到的这个论坛上没有被问过。我想如果说我已经搜索过答案将表明我在询问之前已经完成了跑腿工作。不知道你还需要什么。
  • 快速搜索给了我前两个结果:stackoverflow.com/questions/6517501/…allabouttestautomation.wordpress.com/2016/03/19/… 这看起来像是您正在寻找的东西,但您没有提到您已经看过或忽略了它们,等
  • 通常人们会说他们已经搜索过所有内容,但快速的 google 搜索会返回许多有用的链接,因此记录您搜索过的字词、查看过的内容和忽略的内容可以为我们节省很多时间试图猜测......这是我最初所说的。我严重怀疑你是第一个问这个问题的人。您应该牢记这一点,并假设您不是第一个。

标签: selenium selenium-webdriver selenium-grid


【解决方案1】:

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

有很多方法可以知道它。

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

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

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

【讨论】:

    【解决方案2】:

    您不需要自己管理测试队列。 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
    

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

    您还可以使用 bash 命令 parallel 并创建一个测试数组,然后以并行方式运行它。假设并行 5 个作业。

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

    更多关于Selenium configuration 更多关于在parallel中运行测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      相关资源
      最近更新 更多