我想知道是否有人可以对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) - 与其他测试会话一起?
答案 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。要更改此设置和其他浏览器设置,可以将参数传递到每个-browser
开关(每个开关根据您的参数代表一个节点)。如果您使用-browser
参数,则默认浏览器将被忽略,并且仅使用您指定的命令行。
maxInstances是一个可选参数,可以通过-browser
可选参数传递。
要为 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
网格控制台快照:
为 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
网格控制台快照:
-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
答案 2 :(得分:0)
Hyper-V-Worker
:这为您提供了每个节点更多的插槽,例如MaxInstances
将允许每个节点最多5个浏览器
MaxInstances=5
:设置可以在一个节点上同时运行的最大测试数量。
如果为MaxSession
,则MaxSession也应至少为5。
答案 3 :(得分:0)
为了扩展Anuragh27crony's answer,我绘制了一个快速图表:
如果这是您的节点配置,那么您最多可以并行执行5个测试,例如以下组合:
以下组合是不可能的:
如Anuragh所述,MaxInstances适用于特定的浏览器,而MaxSessions适用于整个节点。