66

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

我们对Selenium Grid 的含义MaxSession感到困惑。MaxInstances我们认为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

4 回答 4

121

好问题..我会说这有点令人困惑..但会尝试用简单的术语来回答..

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

于 2012-12-05T13:00:14.943 回答
4

为了扩展Anuragh27crony 的答案,我绘制了一个快速图表:

在此处输入图像描述

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

  • 3 * 铬,2 * 火狐
  • 2 * 铬,2 * 火狐,1 * 边缘
  • 5 * 边缘
  • 3 * 铬

以下组合是不可能的:

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

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

于 2019-07-18T13:22:06.573 回答
2

根据默认情况下配置节点中的文档,启动Selenium 网格节点允许同时使用 11 个浏览器:

  • 5 火狐
  • 5 铬
  • 1 互联网浏览器

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


最大实例数

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

用例 1

要为20个Firefox version=XYZ实例配置Selenium Grid 节点,您可以使用以下解决方案:

  • 命令:

    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 版本=ABC10个实例 和Chrome 版本=XYZ的20 个实例配置Selenium 网格节点,您可以使用以下解决方案:

  • 命令:

    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
  • 网格控制台快照:

最大会话

于 2020-02-14T12:54:19.620 回答
0

MaxInstances:这为每个节点提供更多插槽,例如,MaxInstances=5每个节点最多允许 5 个浏览器

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

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

于 2019-03-09T05:43:19.443 回答