Selenium Manager可以用起来了
前几天随手写了几个 headless 的 selenium 爬虫脚本,运行的时候发现本地的 chromedriver 竟然不需要更新,一时间有点没反应过来,毕竟 selenium 有个痛点就是chrome 浏览器自动升级之后需要下载新的 chromedrier, 否则之前的脚本将会报错。当然了,之前也有一些规避的方式,比如
- 关掉 chrome 的自动升级
- 用 firefox,毕竟geckodriver 一年也就更新个 2-3 个版本
- 用第三方的 driver 管理工具,比如 python 有个webdriver-manager
这些方法其实都挺好,都能解决核心问题,特别是 python 的 webdriver-manager,几行代码就可以保持 driver 永远自动更新,举个例子
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
这次不用更新 driver 是因为使用了官方推出的selenium manager,之前没留意,不过真到用的时候发现还是比较方便的。对我来说 selenium manager 最方便的就是初始化环境的功能,比如
- 自动安装浏览器
- 自动安装 driver
- 支持多架构多系统
- 可以配置代理,这点很重要
- 自动管理浏览器和 driver,其实就是把浏览器和 driver 放在了系统 PATH 里
如果我有一个脚本需要在 windows 和 macos 的最新版本 chrome 上跑,那么环境初始化就非常容易了,只需要下面的命令
selenium-manager --browser chrome
selenium-manager --driver chromedriver
selenium manager 会自动探测机器架构和系统,然后下载 chrome 浏览器和 driver,如果遇到下载不畅的情况,直接设置一下代理就可以了。
下载
selenium manager 让人一头雾水的地方是安装方法,其实 selenium manager 是不需要安装的,直接下载就好。 selenium manager 是用 rust 写的命令行应用(rust 现在势头很盛,比如 cloudflare 就用 rust 写了个 nginx 的平替 Pingora),目前的下载方式还是直接下载二进制文件,下载地址是:https://github.com/SeleniumHQ/selenium_manager_artifacts/releases。该项目更新非常频繁,大家下最新的版本就好。
保持 driver 自动更新
思路很简单,如果是非 windows 机器的话可以使用 crontab。
0 5 * * * selenium-manager --driver chromedriver
总结
之前写过文章去介绍 selenium manager 的具体用法,大家有兴趣可以往回翻一下。这篇文章主要是感慨一下 selenium manager 给日常工作带来的便利。之前经常遇到的一段时间过后 selenium 代码执行报错的问题目前是有了工程化的解决方案了,推荐大家使用。