不知道从什么时候开始,selenium 经常行出现启动慢的问现象
具体表现为:
已提前下载好了浏览器驱动,可以正常启动浏览器
快的时候有时 2 秒就启动好,慢的时候要半分钟左右
不是每一次都慢,慢一次之后再启动就正常了
一两个小时候会复现一次,一天出现多次,很烦
通过对 selenium 的跟着和分析发现,问题还是出现在 selenium manager 上。
selenium 启动时会借助 selenium manager 找到浏览器驱动,如果没有合适的浏览器驱动,就会自动下载。
因为下载地址都是国外的,所以下载比较慢,甚至下载失败,这是导致 Selenium 启动慢的主要原因。
那么,为什么已经手动下载好驱动,selenium 还会启动缓慢呢?
驱动的版本要和浏览器的版本相匹配,不是有驱动就能直接使用,selenium manager 会在启动时检查版本之间的匹配关系。
检查版本也需要请求国外的地址,这就是 Selenium 启动慢的另外一个原因。
版本检查不是每次启动都会执行,每次检查后结果会缓存一小时,在此之内不再重复检查,
于是形成了现在的尴尬局面:
手动下载的驱动可以启动,可以正常使用
但是偶尔抽风卡一下,全天要卡好几次
找到问题的原因,就好解决了。
既然问题的根源是:访问国外的网络缓慢(部分网络甚至访问失败),
对应解决办法就是:国内服务器提前下载好所需的资源,然后让 selenium manage 访问更快国内的服务器。
服务器已经部署了一段时间了,从实际效果来看,改善了网络访问效率后 selenium 使用非常方便丝滑:
自动下载所需的浏览器驱动(支持各版本 chrome、firefox、edge)
避免每小时一次的启动缓慢(3 秒完成版本检查)
为降低服务器成本,特招拼车队友,并可以提供一个短期试用(文末有具体步骤):
如果你有类似困扰,并且愿意分担服务器费用的话可以后台找到我
或者,你已经有国内的服务器(ubuntu+docker)愿意提供公益服务的话,可以免费代为部署
(如果你此前已经为 webdriver-helper 付过费,请私聊我,免费提供 2 年的 selenium 加速)
试用步骤:
selenium 版本升级到4.25.1以上
pip3 install selenium -U
将加速地址保存到环境变量SE_DRIVER_MIRROR_URL中
Windwos :
Linux/MacOS:
python:
重新加载环境变量后,正常使用 selenium 即可(windows/linux、python/java 均可)