将 chromeOptions 参数传递给 Linux 上的 .json 文件中的 selenium 节点

Passing chromeOptions args to the selenium node in .json file on Linux

我正在尝试使用以下配置创建节点:

java -Dwebdriver.chrome.driver=/randomfolder/chromedriver -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig node-conf.json

如您所见,我正在 json 文件中传递配置。它正确地设置了配置,除了 chrome 选项。我需要 chrome 才能无头打开。这是我的 .json 文件的一部分,它设置了功能。

"capabilities": [
    {  
         "browserName":"chrome",
         "maxInstances":3,
         "version":"ServerLinux",
         "platform":"LINUX",
         "chromeOptions": {
            "args": ["--headless", "--disable-gpu" , "--window-size=1920x1080", "--no-sandbox"]
         }
     }
   ]

我尝试了不同的方式来编写 chrome 选项,但节点总是忽略它们。我只是瞎了,看不到我的错误吗? 提前致谢!

我也面临这个问题,但就我而言,我想修改用户代理,而在 Linux 上,chromeOptions 似乎被忽略了。这在 Mac/Chrome.

本地为我工作
//wdio.conf.js
capabilities: [{
    browserName: "chrome",
    chromeOptions : {
        args : ['--user-agent=THIS_IS_A_TEST']
    }
  }],

//Jenkins job on Linux RHEA
13:42:33 [11/10/2018 13:42:33.049] [LOG]   browser.desiredCapabilities = {
13:42:33   "javascriptEnabled": true,
13:42:33   "locationContextEnabled": true,
13:42:33   "handlesAlerts": true,
13:42:33   "rotatable": true,
13:42:33   "browserName": "chrome",
13:42:33   "acceptInsecureCerts": true,
13:42:33   "chromeOptions": {
13:42:33     "args": [
13:42:33       "--user-agent=THIS_IS_A_TEST",
13:42:33       "window-size=1600,1200"
13:42:33     ]
13:42:33   },
13:42:33   "loggingPrefs": {
13:42:33     "browser": "ALL",
13:42:33     "driver": "ALL"
13:42:33   }
13:42:33 }
13:42:33 [11/10/2018 13:42:33.072] [LOG]   printNavigatorUserAgent() navigator.userAgent = Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36

预期:printNavigatorUserAgent() navigator.userAgent = THIS_IS_A_TEST

printNavigatorUserAgent(){

  let result = browser.execute(function() {
      return navigator.userAgent;
  },);

  console.log(`printNavigatorUserAgent() navigator.userAgent = ${result.value}`);

}

更新:以下语法目前适用于我 Linux/chrome。

//wdio.conf.js
capabilities: [{
  browserName: "chrome",
    "goog:chromeOptions" : {
      "args" : ['user-agent=THIS_IS_A_TEST']
  }
}],

“尝试并猜测”正确的 JSON 语法非常耗时,而且架构可能会发生变化。最安全的选择是为您选择的语言选择 API,然后选择 assemble 并自己生成 JSON。确保选择与您定位的 Selenium 站点和堆栈相匹配的版本。

示例Python:

from selenium.webdriver.chrome.options import Options as ChromeOptions

options = ChromeOptions()
options.add_argument('--incognito')
options.to_capabilities()

这看起来像:

{
 'browserName': 'chrome',
 'version': '',
 'platform': 'ANY',
 'goog:chromeOptions': {
   'extensions': [],
   'args': ['--incognito']
 }
}

最后一点,如果您的网站引入了自己的功能列表,这个覆盖和那个可能会合并,所以引入您的增量只是为了避免意外。