在节点配置 json (3.0.1) 中定义 selenium chromedriver 可执行文件的位置?

Define location of selenium chromedriver executable in node config json (3.0.1)?

我知道我可以像这样启动 selenium 网格节点时定义 chrome 驱动程序可执行文件的位置:

-jar -Dwebdriver.chrome.driver="C:\chromedriver.exe" selenium-server-standalone-3.0.1.jar -role node -nodeConfig. nodeConfig.json

但是如何在配置文件中定义 chrome 驱动程序的位置?我试过这个:

{
    "capabilities":
[
    {
        "browserName": "chrome",
        "maxInstances": 5,
        "seleniumProtocol": "WebDriver",
        "webdriver.chrome.driver": "C:\chromedriver.exe"
    },
....

但是还是失败了。没什么大不了的,但是尝试将尽可能多的配置移动到子文件中,这是达到此目的的最后一步。

我认为您不能在节点配置 JSON 文件中指定 chromedriver 的位置,因为据我所知,selenium 代码库中没有逻辑,基本上是从它通过它获得的功能列表中读取它的节点配置文件。

与其尝试将 chromedriver 二进制文件的路径放入 JSON 文件,我建议您将 chromedriver 二进制文件的位置作为 PATH 变量的一部分。理想情况下,ChromeDriver 二进制存在应该被视为机器的 pre-requisite(就像您期望安装 java 或安装浏览器的方式一样)

当我在 json 配置文件中添加这两个属性时,它与我一起使用,如下所示: 注意最后两行

{
  "capabilities":
  [
    {
      "browserName": "firefox",
      "marionette": true,
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "internet explorer",
      "platform": "WINDOWS",
      "maxInstances": 1,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "safari",
      "technologyPreview": false,
      "platform": "MAC",
      "maxInstances": 1,
      "seleniumProtocol": "WebDriver"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": -1,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://192.168.1.2:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "webdriver.gecko.driver":"c:/drivers/geckodriver.exe",
  "webdriver.chrome.driver":"c:/drivers/chromedriver.exe"
}