我正在尝试为Selenium Standalone Server设置最大实例数和最大会话数,因为我很有可能需要很多实例/浏览器。 我尝试了以下命令:
xvfb-run java -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -jar /usr/local/bin/selenium-server-standalone.jar -maxSession 100 -maxInstances 100
但是我收到以下错误:
线程“ main” com.beust.jcommander.ParameterException中的异常: 未知选项:-maxSession位于 com.beust.jcommander.JCommander.parseValues(JCommander.java:742)在 com.beust.jcommander.JCommander.parse(JCommander.java:282)在 com.beust.jcommander.JCommander.parse(JCommander.java:265)在 com.beust.jcommander.JCommander。(JCommander.java:210)在 org.openqa.grid.selenium.GridLauncherV3 $ 1.setConfiguration(GridLauncherV3.java:227) 在 org.openqa.grid.selenium.GridLauncherV3.buildLauncher(GridLauncherV3.java:155) 在 org.openqa.grid.selenium.GridLauncherV3.main(GridLauncherV3.java:75)
当我尝试仅通过maxInstance运行它时,会发生类似的情况。 如何设置大量/无限数量的实例/浏览器?默认金额是多少? (在任何地方也找不到)预先感谢。
答案 0 :(得分:0)
根据Selenium Grid文档,maxSession和maxInstances是节点的参数,而不是集线器的参数。
-maxSession 5(默认为5)可以在节点上并行运行的最大浏览器数。这与受支持的浏览器的maxInstance不同(示例:对于支持Firefox 3.6,Firefox 4.0和Internet Explorer 8的节点,maxSession = 1将确保您运行的浏览器永远不会超过1个。使用maxSession = 2时,您可以拥有2个浏览器Firefox同时进行测试,或1个Internet Explorer和1个Firefox测试)。 (来源:https://github.com/SeleniumHQ/selenium/wiki/Grid2#optional-parameters)
因此,在您的情况下,您很可能应该通过设置一个或多个节点(建议使用更安全的方法,因为如果100个节点中的1个中断其他节点仍然可以完成此任务)来管理多个并行线程。
使用以下命令运行集线器:java -jar selenium-server-standalone-.jar -role集线器
运行节点1:java -jar selenium-server-standalone-<version>.jar -role node -port 4001 -hub http://localhost:4444/grid/register
运行节点2:java -jar selenium-server-standalone-<version>.jar -role node -port 4002 -hub http://localhost:4444/grid/register
...
运行节点20:java -jar selenium-server-standalone-<version>.jar -role node -port 420 -hub http://localhost:4444/grid/register
将为您提供一个包含100个浏览器的网格(因为5是一个节点的默认值,并且您设置了20个节点)
注意:确保您的硬件最多可以容纳100个浏览器实例,因为它很可能不会容纳,并且您希望在多个VM中运行节点。
另一个说明:当节点很多时,硒网格有一个已知的弱点。对于将来,如果您可以在Linux上运行浏览器很好,则可能需要查看一些基于docker的解决方案,例如 selenoid (https://github.com/aerokube/selenoid)