【问题标题】:Chromedriver error "Chrome version must be >= 52" using Nightwatch使用 Nightwatch 的 Chrome 驱动程序错误“Chrome 版本必须 >= 52”
【发布时间】:2016-09-17 00:33:39
【问题描述】:

我正在尝试设置 Nightwatch,并且正在使用 latest chromedriver,上面写着 supports chrome v52-54。但是,当我尝试运行测试时,它显示 'Error: Chrome version must be >=52.0.2743.' 这是我正在使用的所有内容:

项目结构

|-- nightwatch.json
|-- bin/
|   |-- chromedriver
|   |-- selenium-server-standalone-2.53.1.jar
|-- tests/
|   |-- sample.js
|-- results/
|-- screens/
|-- node_modules/
|   |-- (lots of modules here)

这是我的configuration file 守夜人:

./nightwatch.json

{
  "src_folders" : ["tests"],
  "output_folder" : "results",
  "custom_commands_path" : "",
  "custom_assertions_path" : "",
  "page_objects_path" : "",
  "globals_path" : "",

  "selenium" : {
    "start_process" : true,
    "server_path" : "bin/selenium-server-standalone-2.53.1.jar",
    "log_path" : "results",
    "host" : "127.0.0.1",
    "port" : 4444,
    "cli_args" : {
      "webdriver.chrome.driver" : "bin/chromedriver"
    }
  },

  "test_settings" : {
    "default" : {
      "launch_url" : "http://localhost",
      "selenium_port"  : 4444,
      "selenium_host"  : "localhost",
      "silent": true,
      "screenshots" : {
        "enabled" : true,
        "path" : "screens/"
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    },

    "chrome" : {
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    }
  }
} 

运行测试

我这样运行测试:

nightwatch tests/

错误

我得到以下输出:

Starting selenium server... started - PID:  3500

[Sample] Test Suite
=======================

Running:  Demo test Google

Error retrieving a new session from the selenium server

Connection refused! Is selenium server started?
{ sessionId: null,
  status: 13,
  state: 'unhandled error',
  value: 
   { message: 'unknown error: Chrome version must be >= 52.0.2743.0\n  (Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 3.2.0-56-generic x86_64) (WARNING: The server did not provide any stacktrace information)\nCommand duration or timeout: 1.42 seconds\nBuild info: version: \'2.53.1\', revision: \'a36b8b1\', time: \'2016-06-30 17:37:03\'\nSystem info: host: \'N/A\', ip: \'N/A\', os.name: \'Linux\', os.arch: \'amd64\', os.version: \'3.2.0-56-generic\', java.version: \'1.7.0_111\'\nDriver info: org.openqa.selenium.chrome.ChromeDriver',
     suppressed: [],
     localizedMessage: 'unknown error: Chrome version must be >= 52.0.2743.0\n  (Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 3.2.0-56-generic x86_64) (WARNING: The server did not provide any stacktrace information)\nCommand duration or timeout: 1.42 seconds\nBuild info: version: \'2.53.1\', revision: \'a36b8b1\', time: \'2016-06-30 17:37:03\'\nSystem info: host: \'N/A\', ip: \'N/A\', os.name: \'Linux\', os.arch: \'amd64\', os.version: \'3.2.0-56-generic\', java.version: \'1.7.0_111\'\nDriver info: org.openqa.selenium.chrome.ChromeDriver',
     buildInformation: 
      { releaseLabel: '2.53.1',
        buildTime: '2016-06-30 17:37:03',
        class: 'org.openqa.selenium.internal.BuildInfo',
        buildRevision: 'a36b8b1',
        hCode: 1900167016 },
     cause: null,
     systemInformation: 'System info: host: \'N/A\', ip: \'N/A\', os.name: \'Linux\', os.arch: \'amd64\', os.version: \'3.2.0-56-generic\', java.version: \'1.7.0_111\'',
     supportUrl: null,
     class: 'org.openqa.selenium.WebDriverException',
     additionalInformation: '\nDriver info: org.openqa.selenium.chrome.ChromeDriver',
     hCode: 1299270263,
     screen: null },
  class: 'org.openqa.selenium.remote.Response',
  hCode: 1144687147 }

有人知道如何解决这个错误吗?

Chrome version must be >= 52.0.2743.0

chromedriver 是否使用我的本地 chrome 副本?我需要更新我的实际 chrome 吗?

【问题讨论】:

  • 是的,chromedriver 确实使用您本地的 Chrome 副本。你用的是哪个版本?

标签: selenium selenium-webdriver selenium-chromedriver nightwatch.js


【解决方案1】:

chromedriver 是否使用我的本地 chrome 副本?我需要更新我的实际 chrome 吗?

是的,ChromeDriver 是 selenium webdriver 用来控制 chrome 的可执行文件。

所以 selenium webdriver 从你在初始化 ChromeDriver 时告诉 selenium webdriver 的默认位置或自定义位置启动你安装的 chrome。

所以基本上ChromeDriver 可执行文件只是用来在 chrome 浏览器和 selenium webdriver 之间进行对话来控制它,这并不意味着它会启动自己的 chrome 浏览器。它使用您安装的 chrome 浏览器。

所以是的,您需要更新实际安装的 chrome。

【讨论】:

  • 我确实已将我的 Chrome 更新到最新版本,但仍然无法使用。
  • @ChesterRivas 你用的是什么版本的chromedriver??你得到了什么错误??
  • @ChesterRivas 通过“ChromeDriver”,他指的不是您的 Chrome 浏览器。 ChromeDriver 是 Protractor 用来控制 Chrome 运行测试的代码(它实际上创建了一个小型开发服务器来加载您的站点以对其进行测试)。见sites.google.com/a/chromium.org/chromedriver/downloads
【解决方案2】:

是的,ChromeDriver 使用您的本地 Chrome 安装。如果您不想升级您的 Chrome 安装,您可以指定适用于已安装 Chrome 版本的 ChromeDriver 版本。

您可以在 https://chromedriver.storage.googleapis.com/2.25/notes.txt 找到不同 ChromeDriver 版本的兼容 Chrome 版本(如果您的 Chrome 版本比此处列出的版本更新,请将“2.25”更改为更新的版本)。

如果您的测试框架使用 Node.js webdriver-manager,您可以使用(例如版本 2.20)简单地安装所需的 ChromeDriver 版本(保留任何已安装的版本):

webdriver-manager update --chrome --versions.chrome=2.20

并在通过webdriver-manager 启动 Selenium 时指定适当的 ChromeDriver 版本:

webdriver-manager start --versions.chrome=2.20

如果webdriver-manager不可用,您可以简单地下载所需的ChromeDriver版本并使用一些技术将以下参数传递给Selenium服务器启动命令:

-Dwebdriver.chrome.driver=/path/to/the/desired/chromedriver_version

【讨论】:

  • In case you prefer not to upgrade your Chrome installation -- 或者如果您没有升级 Chrome 的管理权限!这个答案为我节省了数小时的痛苦。谢谢!
【解决方案3】:

如果您使用的是 Ubuntu 16.04,则此代码有效:

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

x64

sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

x32

sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

安装/更新

sudo apt-get update
sudo apt-get install google-chrome-stable

Source

【讨论】:

  • 帮我安装了新版本的 Chrome :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 2022-01-28
  • 1970-01-01
相关资源
最近更新 更多