在哪里可以找到Se 2网格集线器配置json的架构或文档?

时间:2011-09-13 17:22:47

标签: selenium selenium-webdriver

我有一个Se 2网格集线器正在运行。在哪里可以找到-hubConfig参数的效果和架构的文档?目前,我的网格集线器显示:"updated with grid2 config : No hub config file specified. To specify one, use -hubConfig XXX.json where XXX.json is a hub config file".我可以在没有配置的情况下使用集线器。

我在博客和问题中找到了示例,但没有明确的文档。

博客:http://opensourcetester.co.uk/2011/07/06/selenium-grid-2/

问题:http://code.google.com/p/selenium/issues/detail?id=2399

3 个答案:

答案 0 :(得分:11)

我找到了一个很好的起点,即examples in the Selenium Grid 2 code base

这是一个示例中心文件(假设我们将json文件命名为hub.json):

使用: java -jar selenium-server-standalone-2.6.0.jar -role hub -hubConfig hub.json

{
  "host": null,
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "prioritizer": null,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,

  "cleanUpCycle": 5000,
  "timeout": 300000,
  "maxSession": 5
}

这是一个示例节点文件(假设文件名为rc.json):

使用: java -jar selenium-server-standalone-2.6.0.jar -role rc -nodeConfig rc.json

{
  "capabilities":
      [
        {
          "browserName": "firefox",
          "maxInstances": 5
        },
        {
          "browserName": "chrome",
          "maxInstances": 5
        },
        {
          "browserName": "internet explorer",
          "maxInstances": 1
        }
      ],
    "configuration":
        {
        "nodeTimeout":120,
        "port":5555,

        "hubPort":4444,
        "hubHost":"localhost",

        "nodePolling":2000,

        "registerCycle":10000,
        "register":true,
        "cleanUpCycle":2000,
        "timeout":30000,
        "maxSession":5,
        }
}

如果需要具有不同的配置,您可以创建角色“wd”的类似格式。

答案 1 :(得分:3)

javadocs和各种source code文件在某种程度上有所帮助,但是wiki不是很有用,并且在您深入研究代码之前,各种配置示例似乎不一致。例如,DefaultHub.json指定"timeout" : 300000,导致假设超时为ms,但是如果查看命令行示例,您将看到超时以秒为单位指定。如果您查看代码,您会看到,实际上,JSON配置方案确实以ms为单位执行超时(以及所有其他时间值),但所有其他配置方案都以秒为单位采用超时(以及其他一些时间值)。

我找到的针对集线器和节点选项的最易读,最简洁的文档位于GridParameters.properties的旧副本中(似乎不再存在),但请记住所有时间值在JSON配置文件中是ms

role = <hub|node> (default is no grid, just run an RC/webdriver server). When launching a node, the parameters will be forwarded to the server on the node, so you can use something like -role node -trustAllSSLCertificates.  In that case, the SeleniumServer will be launch with the trustallSSLCertificates option.

# hub config
host = (hub & node)  <IP | hostname> : usually not needed and determined automatically. For exotic network configuration, network with VPN, specifying the host might be necessary.
port = (hub & node) <xxxx> : the port the remote/hub will listen on. Default to 4444.


throwOnCapabilityNotPresent = (hub) <true | false> default to true. If true, the hub will reject test requests right away if no proxy is currently registered that can host that capability.Set it to false to have the request queued until a node supporting the capability is added to the grid.
newSessionWaitTimeout = (hub) <XXXX>. Default to no timeout ( -1 ) the time in ms after which a new test waiting for a node to become available will time out.When that happens, the test will throw an exception before starting a browser.

capabilityMatcher = (hub) a class implementing the CapabilityMatcher interface. Defaults to org.openqa.grid.internal.utils.DefaultCapabilityMatcher. Specify the logic the hub will follow to define if a request can be assigned to a node.Change this class if you want to have the matching process use regular expression instead of exact match for the version of the browser for instance. All the nodes of a grid instance will use the same matcher, defined by the registry.
prioritizer = (hub) a class implementing the Prioritizer interface. Default to null ( no priority = FIFO ).Specify a custom prioritizer if you need the grid to process the tests from the CI, or the IE tests first for instance.
servlets = (hub & node) <com.mycompany.MyServlet,com.mycompany.MyServlet2> to register a new servlet on the hub/node. The servlet will accessible under the path  /grid/admin/MyServlet /grid/admin/MyServlet2


grid1Yml = (hub) a YML file following grid1 format.
hubConfig = (hub) a JSON file following grid2 format that defines the hub properties.
nodeConfig = (node) a JSON file following grid2 format that defines the node properties.


# config that will be inherited by the proxy and used for the node management.
cleanupCycle = (node) <XXXX> in ms. How often a proxy will check for timed out thread.
timeout = (node) <XXXX>  the timeout in seconds before the hub automatically ends a test that hasn't had any activity in the last X seconds. The browser will be released for another test to use. This typically takes care of the client crashes.
browserTimeout= (hub/node) The timeout in seconds a browser can hang
hub = (node) <http://localhost:4444/grid/register> : the url that will be used to post the registration request. This option takes precedence over -hubHost and -hubPort options.
hubHost = (node) <IP | hostname> : the host address of a hub the registration request should be sent to. Default to localhost. Option -hub takes precedence over this option.
hubPort = (node) <xxxx> : the port listened by a hub the registration request should be sent to. Default to 4444. Option -hub takes precedence over this option.
proxy = (node) the class that will be used to represent the node. By default org.openqa.grid.selenium.proxy.DefaultRemoteProxy.
maxSession = (node) max number of tests that can run at the same time on the node, independently of the browser used.
registerCycle = (node) how often in ms the node will try to register itself again.Allow to restart the hub without having to restart the nodes.
nodePolling = (node) in ms. Interval between alive checks of node how often the hub checks if the node is still alive.
unregisterIfStillDownAfter = (node) in ms. If the node remains down for more than unregisterIfStillDownAfter millisec, it will disappear from the hub.Default is 1min. 
downPollingLimit = (node) node is marked as down after downPollingLimit alive checks.
nodeStatusCheckTimeout = (node) in ms. Connection and socket timeout which is used for node alive check.

答案 2 :(得分:0)

维基文档很稀疏,但源代码中有很多有用的注释。 GridHubConfiguration.java是你应该开始的地方。这是一个示例:

  /**
   * how often in ms each proxy will detect that a session has timed out. All new proxy registering
   * will have that value if they don't specifically mention the parameter.
   */
  private int cleanupCycle;

  /**
   * how long a new session request can stay in the queue without being assigned before being
   * rejected. -1 = forever.
   */
  private int newSessionWaitTimeout;

正在寻找timeout配置的含义,found here

  /**
   * how many ms can a session be idle before being considered timed out. Working together with
   * cleanup cycle. Worst case scenario, a session can be idle for timeout + cleanup cycle before the
   * timeout is detected.
   */
  public static final JsonKey CLIENT_TIMEOUT = JsonKey.key("timeout");