【问题标题】:How to run multiple browsers on one hub using Selenium Grid2如何使用 Selenium Grid2 在一个集线器上运行多个浏览器
【发布时间】:2011-08-02 17:29:15
【问题描述】:

我正在测试:

DesiredCapabilities capability = DesiredCapabilities.Firefox();
                IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capability);

                ISelenium selenium = new WebDriverBackedSelenium(driver, "http://localhost/");
                selenium.Start();

这会运行 Firefox 浏览器,在 http://localhost:4444/grid/console Web 控制台视图中,我可以看到一个 Firefox 浏览器正在运行。如何在节点上并行使用多个浏览器?

我正在使用 Grid2 维基页面 found here

【问题讨论】:

  • 你的测试套件中有 5 个测试吗?

标签: c# selenium-grid


【解决方案1】:

您需要同时触发 5 个测试 - 所有测试都指向同一个集线器,才能使用所有浏览器。在接收到来自不同测试的命令时,集线器会将这些命令传递给匹配能力的 RC。您可以在此页面中查看更多详细信息:http://selenium-grid.seleniumhq.org/how_it_works.html。

根据这个网站:-

当然,要真正利用 Selenium Grid,您需要 并行运行您的测试。如果您正在编写 Selenium 测试 Java,您可以利用 TestNG 并行运行或 Parallel JUnit。如果你 更喜欢用 Ruby 编写 Selenium 测试,你可能想看看 进入 DeepTest 或产生多个进程。很有可能你的 喜欢的编程语言和开发平台已经有了 解决方案。

编辑: 上面给出的站点适用于 Selenium 1.x 版本,而不适用于 Grid 2.0。但是,运行并行测试的基本概念保持不变

编辑2: 步骤和示例程序如下。请注意,这是一个非常基本的测试,仅用于向您展示 Grid 如何并行运行测试。

第 1 步 - 启动 Grid Hub java -jar selenium-server-standalone.jar -role hub

Step2 - 启动 RC 节点。 我们使用的测试例如是 webdriver 测试。所以我们需要启动webdriver节点。该命令将启动一个支持 5 个 firefox 浏览器、5 个 googlechrome 和 1 个 IE 浏览器的 webdriver 节点。这是 webdriver 的默认配置。

java -jar selenium-server-standalone.jar -role wd -hub http://localhost:4444/grid/register

第 3 步 - 创建 5 个单独的程序,类似于下面给出的程序。 这个程序是 JAVA 格式的。您需要将其更改为您需要的语言。将类名更改为 Program2、Program3 等。如前所述,这不是并行运行测试的最佳方式。您需要使用 testNG 或 jUnit 来同时触发多个测试。由于这本身是一个不同的主题,我不打算在这里解释它。

public class Program1{
        public static void main(String args[]){

            WebDriver wd;
            //Assign a remotewebdriver object to webdriver with firefox capability
            wd=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),DesiredCapabilities.firefox());
            wd.get("http://www.google.com");
            //Sleep for 2 seconds so that RC will not be released. This is to demonstrate Hub using multiple RCs
            Thread.sleep(120000);
            //Close webdriver
            wd.quit();

        }
    }

第 4 步 - 同时运行所有 5 个程序。

第 5 步 - 观察网格并行运行 5 个测试的魔力。 :)

【讨论】:

  • 我仍在处理这个问题。运行 2 次时,我总是遇到错误并关闭。如果只运行一次就可以了。为什么?然后如何运行它 2 次或更多。你能给我举个例子吗?谢谢
  • 好的,我已经更新了我的答案。请注意,在示例程序中没有使用 WebDriverBackedSelenium 对象。您可以将该行添加到代码中,而不是使用 wd.get
  • 我必须告诉你,现在一切正常。使用 ws 比使用 rc 快得多。再次感谢
  • 酷。很高兴能帮到你。
猜你喜欢
  • 2017-11-02
  • 2011-11-10
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2011-03-22
  • 2014-10-27
相关资源
最近更新 更多