当前位置: 首页 > 知识库问答 >
问题:

使用网格时,我们是否需要在每个测试用例中提及每个节点的url

李良策
2023-03-14

如何说明应该在哪个节点上执行哪个测试用例
例如:
假设在IP为a1的系统上,我启动了grid HUB
并向HUB a1注册了b1、b2、b3。

现在,如果我有一个类,它的测试是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"));

共有2个答案

慕和惬
2023-03-14

您只需初始化远程WebDriver并在集线器上注册它,并设置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);

然后你的代码将在浏览器的那个节点上运行。

如果有多个节点可以提供相同的浏览器(相同的平台、相同的浏览器、相同的browserversion),则中心将检查哪个节点负载最少,哪个节点可以提供浏览器的免费实例。

如果您想在特定的计算机上运行测试,那么您的节点必须被标记。最简单的解决方案是使用“应用名称”功能,或者您可以创建自定义功能匹配器。这里有一个简短的例子,我在另一个问题下写的:硒网格和远程网络驱动程序...

牧甫
2023-03-14

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

这些URL可以帮助您了解:

http://hub:4444/admin/
http://node1:5555/extra/NodeLog
http://node2:5555/extra/NodeLog
 类似资料:
  • 问题内容: 我正在尝试提出最有效的数据库。我的巴士路线都大约有10个站。公交车从第一路开始直到到达第十站,然后再次返回。这个周期每天发生3次。 我对于如何有效地生成公交时间以及应该在哪里存储停靠站感到非常困惑。如果将所有停靠点放在一个字段中,将时间停在另一个字段中,则数据库将不会非常动态。 如果我将所有停靠点一一存储在一个列中,然后再将时间停在另一列中,由于一个停靠点有多次重复,因此在向下的位置会

  • 输出 谁能告诉我这里发生了什么?有什么不同?

  • 问题内容: 两列的大小写条件是相同的。在下面的语句中,我两次使用了此条件,但对于不同的列,是否还有其他方法不重复两次条件? 问题答案: thepirat000答案的变体: 查找表是在CTE中创建的,并根据需要为多列进行引用。 更新: 由于某些莫名其妙的原因,表变量现在被赋予了主键。如果有人可以真正解释一下它将如何提高性能,那么我很想听听它。从执行计划来看并不明显。

  • 我正在计划一个新的星火集群。我的问题是我需要在所有数据节点上安装spark worker节点吗?例如,如果我有50个数据节点,而我只安装了10个spark worker节点,这合理吗?谢了!

  • 创建表movieid varchar(8)primary key,moviename varchar(40),language varchar(15),category varchar(20),islive boolean); 创建表theatermovieshow(showid varchar(8)主键, theaterid varchar(8)引用了theaterid(theaterid),

  • 问题内容: 看下面的代码(摘自git页面) 我想知道client.quit()是可选的,还是multi.exec()自动为我执行退出?我正在尝试调试Redis中的内存泄漏,但我意识到我没有在任何地方使用.quit()。我可以做? 意思是,我的代码应该像这样吗? 基本上,client.quit会放在哪里,我什至需要它? 问题答案: “多条命令排队,直到发出EXEC,然后Redis自动运行所有命令。”