Selenium Grid:MaxSessions vs MaxInstances

时间:2012-12-05 12:33:13

标签: selenium selenium-webdriver selenium-grid

我想知道是否有人可以对Selenium一个让我们有点头疼的问题有所了解。

我们对Selenium Grid的MaxSessionMaxInstances的含义感到困惑。我们认为MaxSession是可以在单个节点上运行的测试会话的总数。我们还认为MaxInstances是测试可以打开的浏览器总数。

MaxInstances节点可用的浏览器总数是多少?

我们使用的命令是:

java -Xrs -jar selenium-server.jar -role node -port 44506 -hub http://localhost:44500
/grid/register -firefoxProfileTemplate SeleniumProfile -timeout 300000 -browser 
"browserName=firefox,maxInstances=10,platform=ANY,seleniumProtocol=WebDriver" -browser 
"browserName=chrome,maxInstances=10,platform=ANY,seleniumProtocol=WebDriver"

我们认为我们使用节点的方式(上面)默认是5个并发测试会话。

每个测试都有20个可用的浏览器吗?

或者每个测试会话是否共享池中的20个浏览器(10 chrome / 10 FF) - 与其他测试会话一起?

4 个答案:

答案 0 :(得分:111)

好问题....我会说这有点令人困惑....但是会尝试用简单的方式回答它。

MaxInstances 这就是说....相同版本的浏览器可以通过远程系统运行多少个实例。

For example, i have a FF12,IE and i declared the command as follows
-browser browserName=firefox,version=12,maxInstances=5,platform=LINUX
-browser browserName=InternetExplorer,version=9.0,maxInstances=5,platform=LINUX

因此,我可以在远程计算机上同时运行5个Firefox 12实例以及5个IE9实例。因此,总用户可以并行运行10个不同浏览器的实例(FF12和IE9)。

MaxSession 这就是说......有多少浏览器(任何浏览器和任何版本)可以一次并行运行远程系统。因此,这将覆盖Max Instances设置,并可以限制可以并行运行的浏览器实例的数量。

For above example, when maxSession=1 forces that you never have more than 1 browser running. 

With maxSession=2 you can have 2 Firefox tests at the same time, or 1 Internet Explorer and 1 Firefox test). 

无论您定义了什么MaxInstances。

有关更详细的信息,请访问 - https://seleniumhq.github.io/docs/grid.html

答案 1 :(得分:1)

默认情况下,根据Configuring the nodes中的文档,启动 Selenium Grid Node 允许同时使用11个浏览器:

  • 5个Firefox
  • 5个Chrome
  • 1个Internet Explorer

默认情况下,并发测试的最大数量设置为5。要更改此设置和其他浏览器设置,可以将参数传递到每个-browser开关(每个开关根据您的参数代表一个节点)。如果您使用-browser参数,则默认浏览器将被忽略,并且仅使用您指定的命令行。


maxInstances

maxInstances是一个可选参数,可以通过-browser可选参数传递。

用例1

要为 Firefox version = X.Y.Z 20 个实例配置 Selenium Grid Node ,您可以使用以下解决方案:

  • 命令:

    java -Dwebdriver.gecko.driver=geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.125:4444/grid/register -browser browserName=firefox,version=X.Y.Z,maxInstances=20,platform=WINDOWS
    
  • 节点控制台日志:

    C:\Utility\SeleniumGrid>java -Dwebdriver.gecko.driver=geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.125:4444/grid/register -browser browserName=firefox,version=X.Y.Z,maxInstances=20,platform=WINDOWS
    16:54:11.843 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
    16:54:12.003 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Launching a Selenium Grid node on port 6318
    2020-02-14 16:54:12.523:INFO::main: Logging initialized @1022ms to org.seleniumhq.jetty9.util.log.StdErrLog
    16:54:12.860 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
    16:54:12.974 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 6318
    16:54:12.974 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Selenium Grid nodeis up and ready to register to the hub
    16:54:13.161 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.
    16:54:13.765 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://192.168.1.125:4444/grid/register
    16:54:13.962 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use
    
  • 网格控制台快照:

GidNodeFirefox20

用例2

Firefox version = ABC 10 实例和 20 实例的 10 实例配置 Selenium Grid Node em> Chrome version = XYZ ,您可以使用以下解决方案:

  • 命令:

    java -Dwebdriver.gecko.driver=geckodriver.exe -Dwebdriver.chrome.driver=chromedriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.125:4444/grid/register -browser browserName=firefox,version=X.Y.Z,maxInstances=10,platform=WINDOWS -browser browserName=chrome,version=X.Y.Z,maxInstances=20,platform=WINDOWS
    
  • 网格控制台快照:

GidNodeFirefox10Chrome20


-maxSession

-maxSession也是一个可选参数,可以作为主要参数传递,以配置可以在特定节点上并行运行的最大浏览上下文数。这与受支持的浏览器maxInstance不同(示例:对于支持Firefox版本ABC,Firefox版本PQR和Chrome版本XYZ的节点, maxSession = 1 将确保您再也不能拥有更多的浏览器了。而不是运行1个浏览器。使用maxSession=2,您可以同时执行2个Firefox测试,或者1个Firefox和1个Chrome测试)。

示例:

java -Dwebdriver.gecko.driver=geckodriver.exe -Dwebdriver.chrome.driver=chromedriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.125:4444/grid/register -browser "browserName=firefox,version=A.B.C,maxInstances=10,platform=WINDOWS" -browser "browserName=firefox,version=P.Q.R,maxInstances=10,platform=WINDOWS" -browser "browserName=chrome,version=X.Y.Z,maxInstances=20,platform=WINDOWS" -maxSession 2
  • 网格控制台快照:

maxSession

答案 2 :(得分:0)

Hyper-V-Worker:这为您提供了每个节点更多的插槽,例如MaxInstances将允许每个节点最多5个浏览器

MaxInstances=5:设置可以在一个节点上同时运行的最大测试数量。 如果为MaxSession,则MaxSession也应至少为5。

https://github.com/SeleniumHQ/docker-selenium上查看更多信息

答案 3 :(得分:0)

为了扩展Anuragh27crony's answer,我绘制了一个快速图表:

enter image description here

如果这是您的节点配置,那么您最多可以并行执行5个测试,例如以下组合:

  • 3 *铬,2 * Firefox
  • 2 *镀铬,2 * Firefox,1 *边缘
  • 5 *边
  • 3 *铬

以下组合是不可能的:

  • 4 * chrome(超过Chrome maxInstances)
  • 6 *边(超过maxSessions)
  • 3 * chrome,3 * firefox(超过maxSessions)

如Anuragh所述,MaxInstances适用于特定的浏览器,而MaxSessions适用于整个节点。