【问题标题】:Using Grid should we need to mention the url of each node in each test case使用 Grid 我们是否需要在每个测试用例中提及每个节点的 url
【发布时间】:2015-04-16 23:52:48
【问题描述】:

如何提及应该在哪个节点上执行哪个测试用例。
例如:
假设在 IP a1 的系统上,我已经启动了网格 HUB
并已将 b1、b2、b3 注册到集线器 a1。

现在,如果我有一个带有测试 tc1, tc2, tc3, tc4, tc5 等的课程,
我应该如何在每个测试用例中初始化驱动程序?

RemoteWebDriver driver = new RemoteWebDriver(new URL("http://**a1:port/wd/hub**"));

在所有测试用例中,它又会将测试用例绑定到节点

(或)

需要在每个测试用例中提及我们要执行测试用例的节点url。

RemoteWebDriver driver = new RemoteWebDriver(new URL("http://b1:port/wd/hub"));
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://b2:port/wd/hub"));
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://b3:port/wd/hub"));

【问题讨论】:

  • 那么您的问题是如何在每个节点上运行您的测试用例?或者您如何设置在哪个节点上运行您的测试用例?
  • 我的问题是如何设置“在哪个节点上执行哪个测试用例”。如果 Grid 会处理,那么有什么方法可以找出“在哪个节点上哪个测试用例执行”。

标签: testing selenium testng


【解决方案1】:

无需指定任何节点的 URL 或实例主机名。只需将您的测试指向 Grid 中心,它就会根据您发送的浏览器功能知道如何路由到任何连接的节点。

这些网址可以帮助您理解:

http://hub:4444/admin/
http://node1:5555/extra/NodeLog
http://node2:5555/extra/NodeLog

【讨论】:

  • 感谢您的回复。 "hub:4444/admin" 你的意思是 "localhost:4444/admin" 。如果是这样,我得到以下信息您正在使用网格 2.45.0 在官方 selenium wiki 上查找帮助:更多帮助在这里默认监控页面:控制台
  • 实际上我想知道并行运行测试的最佳方式。根据我的理解,我发现将 Selenium Grid 与 Test Ng 一起使用并使用 Jenkins 安排它会帮助我。我的查询是如果假设我在 100 个类中有 1000 个不同的测试。现在我是否必须在所有测试中初始化 [RemoteWebDriver driver = new RemoteWebDriver(new URL("hubIP:port/wd/hub"));] 。集线器将注意它将在哪个节点上运行?
  • 有什么方法可以在哪个节点上执行哪些测试。等待您的回复。提前致谢
【解决方案2】:

您只需初始化 RemoteWebDriver 并将其注册到集线器上,并设置 DesiredCapabilites。据此,集线器将决定在哪个节点上完成您的测试。例如:

如果您使用以下设置注册以下节点:

{
    "capabilities":[
        {
            "platform":"VISTA",
            "browserName":"chrome",
            "version":"30",
            "maxInstances":1,
            "seleniumProtocol":"WebDriver"
        }
    ],
    "configuration":{
        "port":5555,
        "host":"localhost",
        "register":true,
        "hubHost":"localhost",
        "hubPort":4444,
        "maxSession":1,

    }
}

如果您注册了以下 RemoteWebDriver:

WebDriver driver;
DesiredCapabilities dc = new DesiredCapabilities();
dc = DesiredCapabilities.chrome();
dc.setPlatform(org.openqa.selenium.Platform.VISTA);
dc.setVersion("30");
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc);

然后您的代码将在该浏览器中的该节点上运行。

如果您有更多节点可以提供相同的浏览器(相同的平台、相同的浏览器、相同的浏览器版本),那么集线器将检查哪个节点的过载最少,以及哪个节点可以提供浏览器的免费实例.

如果您想在特定计算机上运行测试,那么您的节点必须被标记。最简单的解决方案是使用“applicationName”功能,或者您可以创建自定义功能匹配器。这是我在另一个问题下写的一个简短示例:Selenium Grid and RemoteWebDriver..

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2017-02-28
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多