Selenium webdriver 如何使用Selenium网格在多个节点上并行执行脚本

Selenium webdriver 如何使用Selenium网格在多个节点上并行执行脚本,selenium-webdriver,selenium-grid,Selenium Webdriver,Selenium Grid,以下是我的密码- DesiredCapabilities capability = DesiredCapabilities.firefox(); capability.setBrowserName("firefox"); capability.setPlatform(Platform.VISTA); driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability); driver.manage()

以下是我的密码-

DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setBrowserName("firefox");
capability.setPlatform(Platform.VISTA);
driver  = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
driver.manage().window().maximize();
driver.get(url);
我想在3个不同的节点上执行脚本

对于启动集线器,我使用以下命令:- java-jar selenium-server-standalone-2.53.0.jar-role hub-port 4444

对于节点和

节点1:- java-jar-selenium-server-standalone-2.53.0.jar-role-webdriver-hub-port 5556

节点2:- java-jar-selenium-server-standalone-2.53.0.jar-role-webdriver-hub-port 5557

节点3:- java-jar-selenium-server-standalone-2.53.0.jar-role-webdriver-hub-port 5558


所有3个节点都在3台不同的机器上,所以我的问题是我是否需要在代码中提及所有3个节点的ip地址,或者是否有任何方法可以在所有3台机器上并行执行脚本?

不,您不能直接执行此操作。默认情况下,我认为一个节点支持5个会话。因此,只有在节点1中的所有5个会话都用完之后,测试才能转到第二个节点。因此,为了能够在所有3个节点上并行运行测试,您需要使用maxSession 1启动所有节点,然后为测试分离3个线程。这将导致所有节点同时运行测试。但我只是想知道为什么要对所有节点运行测试?您的用例是什么

如果您使用的是testNG,那么您可以使用testNG.xml中的“parallel”属性作为示例博客参考

您还可以使用带有
标记的Maven的Maven故障保护插件,请查看


希望这能有所帮助。

克里希南,我对此表示怀疑。我认为hub不会耗尽一个节点的所有浏览器,然后再使用第二个节点。我认为它将第一个请求分配给节点1的第一个浏览器,然后将第二个请求分配给节点2的第一个浏览器,将第三个请求分配给节点3的第一个浏览器,然后重复该循环。如果我错了,请纠正我。@显然,节点分布的逻辑最近似乎发生了变化。作为提交的一部分,行为已经改变以考虑资源利用,然后将该信息与创建的最后一个会话的时间戳(如果有两个具有相同资源利用率的节点)配对来决定这一点。所以我不会粗略地说它像一种循环技术,它在新的会话分发中一个节点接一个节点地进行,但在较高的层次上,它也可以被称为循环技术。