无法在Selenium Grid节点上使用无头铬执行量角器测试

时间:2018-09-20 12:20:26

标签: selenium protractor selenium-chromedriver selenium-grid google-chrome-headless

我正在使用带有中心和2个节点的Selenium服务器3.8.1。 集线器和每个节点都在不同的机器上执行。

当前,我可以启动测试,并且它们工作正常。但是,我无法使无头模式运行。

我的配置JSON仅包含功能对象。

{
"capabilities":

[{
  "browserName": "chrome",
  "maxInstances": 3,
  "seleniumProtocol": "WebDriver",
  "chromeOptions": {
        "args": [
              "--headless",
              "--disable-gpu",
              "--window-size=1920x1080"]
  }}]

}

我使用包含以下命令的.bat启动硒节点:

"C:\Program Files\Java\jre1.8.0_181\bin\java" -jar C:\jobs\selenium-node\selenium-server-standalone-3.8.1.jar -role node -hub http://172.16.0.5:5555/grid/register -port 5558 -nodeConfig config.json  -maxSession 3

Selenium节点工作正常,并显示在Selenium网格UI上。 chrome驱动程序的功能还包括--headless和其他参数:

....


capabilities: Capabilities {browserName: chrome, chromeOptions: {args: [--headless, --disable-gpu, --window-size=1920x1080]}, maxInstances: 3, platform: XP, se:CONFIG_UUID: cdc21610-4c47-4d23-9478-a20..., seleniumProtocol: WebDriver}


....

在protractor.conf文件中,我具有这些功能,这些功能在我在本地运行测试时有效。

  seleniumAddress:'http://172.16.0.5:5555/wd/hub', 
getPageTimeout: 120000,
allScriptsTimeout: 120000,
ignoreUncaughtExceptions: true,
chromeOnly:true,
directConnect: false,
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
capabilities: {
"javascriptEnabled": true,
"acceptSslCerts": true,
"browserName": "chrome",
"chromeOptions": {
    "args": [ "--headless", "--disable-gpu", "--window-size=1920,1080"]
   }
},

但是,当我启动测试时,chrome驱动程序不是在无头模式下执行的。工作正常,但不同的窗口不断出现。

环境详细信息:

  • chromedriver版本:2.36.540470
  • chrome版本:69.0.3497.100

1 个答案:

答案 0 :(得分:0)

根据您正在使用的问题/评论更新:

  

chromedriverVersion:'2.36.540470,chrome version'=> '69 .0.3497.100'

您的主要问题是所使用的二进制版本之间的不兼容性

  • 您正在使用 chromedriver = 2.36
  • chromedriver=2.36的发行说明中明确提到以下内容:
  

支持 Chrome v63-65

  • 您正在使用 chrome = 69.0
  • ChromeDriver v2.42的发行说明中明确提到以下内容:
  

支持 Chrome v68-70

因此 ChromeDriver v2.36 Chrome浏览器v69.0

之间存在明显的不匹配

解决方案