2

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

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

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

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

我尝试了不同的方式来编写 chromeOptions,但 node 不断地忽略它们。我只是瞎了眼,看不到我的错误吗?提前致谢!

4

2 回答 2

0

我也面临这个问题,但就我而言,我想修改用户代理,而在 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']
  }
}],
于 2018-10-11T23:55:22.957 回答
0

正确的 JSON 语法的“尝试和猜测”非常耗时,而且架构可能无论如何都会改变。最安全的选择是为您选择的语言选择 API,然后自己组装和生成 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']
 }
}

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

于 2022-01-22T11:26:04.683 回答