chromedriver之版本选择

背景

在跑一个以前的使用chromedriver的selenium程序的时候突然异常,报了如下的错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Traceback (most recent call last):
File "run.py", line 139, in <module>
do_loop()
File "run.py", line 90, in do_loop
cookies = get_cookies()
File "run.py", line 30, in get_cookies
driver = webdriver.Chrome(executable_path='./chromedriver', options=option)
File "/Users/zhengk/PycharmProjects/zhelitou/venv/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/Users/zhengk/PycharmProjects/zhelitou/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/Users/zhengk/PycharmProjects/zhelitou/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/Users/zhengk/PycharmProjects/zhelitou/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/zhengk/PycharmProjects/zhelitou/venv/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome version must be between 70 and 73
(Driver info: chromedriver=2.45.615355 (d5698f682d8b2742017df6c81e0bd8e6a3063189),platform=Mac OS X 10.14.4 x86_64)

这个报错是说明当前的chromedriver版本不匹配,之前也是一样的代码,怎么突然就不匹配了呢?

检查了下自己的chrome版本,原来是不知道什么时候chrome升级了,到了74版本。

image-chromeversion

然后去下载了最新版本的chromedriver,问题解决。

chromedriver的版本选择

在下载chromedriver的时候,会发现chromedriver的版本也相当的多,那么到底应该选择呢?

其实在chromedriver的官网有详细的介绍:

  • chromedriver使用的版本号跟chrome是一样的。
  • 每个版本的chromedriver都有大版本号、小版本号、和构建版本。
  • 在大版本前会有Bete版,同步的也会有一个chromedriver
  • 在新版本发布的时候,也会发布chromedriver

那么如何正确的选择chromedriver,方法如下:

  • 先看你的Chrome版本:比如我的是74.0.3729.131

  • 然后取版本号的前三位,加到url:

    https://chromedriver.storage.googleapis.com/LATEST_RELEASE_

    后面,比如我的就是:

    https://chromedriver.storage.googleapis.com/LATEST_RELEASE_74.0.3729

  • 访问这个网址,就会获得我们chrome对应的chromedriver的版本号:

    image-chromedriverversion

  • 访问https://chromedriver.storage.googleapis.com/index.html网址找到对应的版本的chromedriver即可。也可以直接通过获取的版本号来构建url:

    https://chromedriver.storage.googleapis.com/index.html?path=74.0.3729.6/

    修改上面url的最后版本号数字即可。

    image-driverdownload

更多信息可参考官网说明:

http://chromedriver.chromium.org/downloads/version-selection

扩展

有时候直接chromedriver的网址会被墙导致无法访问,这是可以访问国内的淘宝镜像:

https://npm.taobao.org/mirrors/chromedriver/