使用Grid我们需要提到每个测试用例中每个节点的url

时间:2015-04-15 12:45:47

标签: testing selenium testng

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

现在,如果我有一个有tc1, tc2, tc3, tc4, tc5等等的班级,那么 我应该如何在每个测试用例中启动驱动程序?

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

在所有测试用例中,它反过来将测试用例绑定到节点

(OR)

需要提及我们想在每个测试用例中执行测试用例的节点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"));

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

您只需初始化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..