根据本地浏览器的版本自动更新chromedriver
webdriver-manager
是一个 Python 库,它可以自动下载和管理 Webdriver 驱动程序,包括 ChromeDriver、GeckoDriver、EdgeDriver、IEDriver 等
这个库的主要用途是帮助开发者在不同的操作系统和浏览器上运行 Selenium 测试脚本,避免手动下载和安装驱动程序所带来的麻烦。通过使用 webdriver-manager
,开发者可以:
- 自动下载和更新 WebDriver 驱动程序的二进制文件;
- 管理 WebDriver 驱动程序的版本;
- 在多个浏览器和操作系统之间轻松切换测试环境。
使用 webdriver-manager
有助于使测试脚本的运行更加可靠和稳定,因为它可以确保驱动程序的版本与浏览器版本相匹配。此外,这个库还可以帮助减少测试环境的设置和维护成本,提高测试脚本的可重复性和可移植性。
下面是一个使用 webdriver-manager
的示例:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManagerdriver = webdriver.Chrome(ChromeDriverManager().install())
在这个示例中,我们使用 webdriver-manager
自动下载和安装【兼容本地浏览器的】最新版本的 ChromeDriver 驱动程序,并使用它来启动 Chrome 浏览器。
如果你需要使用特定版本的 WebDriver 驱动程序,可以通过指定版本号来实现。例如,可以使用以下代码安装特定版本的 ChromeDriver:
from webdriver_manager.chrome import ChromeDriverManager# 安装 ChromeDriver 94.0.4606.41
driver_path = ChromeDriverManager(version='94.0.4606.41').install()
在这个示例中,我们使用 version
参数来指定要安装的 ChromeDriver 版本号。这个参数可以是具体的版本号,也可以是一个版本范围,如 94.*
。
webdriver-manager
通过检查本地浏览器的版本来确保下载的 WebDriver 驱动程序与本地浏览器版本兼容。具体来说,它通过读取本地浏览器的版本信息,然后匹配可用的 WebDriver 驱动程序版本,选择最接近的版本,并将其下载到本地。
如果本地浏览器的版本比较旧,webdriver-manager
会尝试选择最接近的兼容版本。
我们还可以方便地指定chromedriver的本地下载和保存路径,它既可以支持相对路径,也可以支持绝对路径的写法,代码示例如下:
from webdriver_manager.chrome import ChromeDriverManagerChromeDriverManager(path = r".\\Drivers").install()
使用webdriver-manager时,如何指定驱动的保存路径?
在这个示例中,我们使用 path
参数来指定 ChromeDriver 的保存路径为 /path/to/driver/folder
,webdriver-manager
将在该路径下下载和保存 ChromeDriver。如果该文件夹不存在,则会自动创建它。
from webdriver_manager.chrome import ChromeDriverManagerdriver_path = ChromeDriverManager(path='/path/to/driver/folder').install()
使用webdriver-manager时,如何指定镜像下载源的url?
from webdriver_manager.chrome import ChromeDriverManagerurl="https://registry.npmmirror.com/-/binary/chromedriver"latest_release_url="https://registry.npmmirror.com/-/binary/chromedriver/LATEST_RELEASE"driver_path = ChromeDriverManager(url=url, latest_release_url=latest_release_url).install()
==================
Firefox用法
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManagerdriver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("https://www.baidu.com/")
Edge用法
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManagerdriver = webdriver.Edge(EdgeChromiumDriverManager().install())
driver.get("https://www.baidu.com/")
Opera用法
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManagerdriver = webdriver.Opera(executable_path=OperaDriverManager().install())
driver.get("https://www.baidu.com/")
=========================
没有知道webdriver-manager之前,我用过的自动更新脚本如下:
# -*- coding: utf-8 -*-
import os
import requests
import winreg
import zipfileurl = 'http://npm.taobao.org/mirrors/chromedriver/'# chromedriver download link
def get_Chrome_version():'''查询系统内的Chrome【浏览器的版本】'''key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Google\Chrome\BLBeacon')version, types = winreg.QueryValueEx(key, 'version')return versiondef get_version(file_path):'''查询系统内的Chromedriver【驱动的版本】'''outstd2 = os.popen(file_path+'chromedriver --version').read()return outstd2.split(' ')[1]def get_server_chrome_versions(): # 获服务器上当前的Chromedriver的版本(返回是列表)'''return all versions list'''versionList = []url = "https://registry.npmmirror.com/-/binary/chromedriver/"rep = requests.get(url).json()for item in rep:versionList.append(item["name"])return versionListdef download_driver(download_url):'''下载文件'''file = requests.get(download_url)with open("chromedriver.zip", 'wb') as zip_file: # 保存文件到脚本所在目录zip_file.write(file.content)print('下载成功')def unzip_driver(path):'''解压Chromedriver压缩包到指定目录'''f = zipfile.ZipFile("chromedriver.zip", 'r')for file in f.namelist():f.extract(file, path)def check_update_chromedriver(file_path): # 如果有版本号完全一致的,就直接下载对应版本的驱动,否则只匹配主版本号就可以了。chromeVersion = get_Chrome_version()chrome_main_version = int(chromeVersion.split(".")[0]) # chrome主版本号driver_main_version=''if os.path.exists(os.path.join(file_path,"chromedriver.exe")):driverVersion = get_version(file_path)driver_main_version = int(driverVersion.split(".")[0]) # chromedriver主版本号download_url = ""if driver_main_version != chrome_main_version:print("chromedriver版本与chrome浏览器不兼容,更新中>>>")versionList = get_server_chrome_versions()if chromeVersion in versionList: # 如果有版本号完全一致的,就直接下载对应版本的驱动,否则只匹配主版本号就可以了。download_url = f"{url}{chromeVersion}/chromedriver_win32.zip"else:for version in versionList:if version.startswith(str(chrome_main_version)): # 检查版本号开头的字符,如果与主版本号相同,就返回对应的驱动URLdownload_url = f"{url}{version}/chromedriver_win32.zip"breakif download_url == "":print("暂无法找到与chrome兼容的chromedriver版本,请在http://npm.taobao.org/mirrors/chromedriver/ 核实。")download_driver(download_url=download_url)path = file_pathunzip_driver(path)os.remove("chromedriver.zip")print('更新后的Chromedriver版本为:', get_version(file_path))else:print("chromedriver版本与chrome浏览器相兼容,无需更新chromedriver版本!")return os.path.join(file_path,"chromedriver.exe")if __name__ == "__main__":file_path="C:\webdrivers\\" # 我电脑的环境变量path设置的驱动目录是"C:\webdrivers\"print(check_update_chromedriver(file_path))
根据本地浏览器的版本自动更新chromedriver相关推荐
- 火狐浏览器怎么关闭自动更新 火狐浏览器关闭自动更新的方法
火狐浏览器怎么关闭自动更新?很多用户觉得更新完新版本,用起来很不习惯.要怎么才能不自动更新呢,下面就给大家分享具体步骤. 首先我们要做的当然是打开你的火狐浏览器了,如果菜单栏在的话,点击工具选项. 火 ...
- android 系统(143)---Android实现App版本自动更新
Android实现App版本自动更新 现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器 ...
- iOS APP版本自动更新
1.版本自动更新一般采用API对应的方式 获取当前App Store上版本号 于本地存储的版本号对比 2.由服务端返回版本控制升级(容易审核不通过) 参考地址(很详细) https://blog.cs ...
- Firefox浏览器强制取消自动更新
问题: Firefox浏览器,在浏览器的设置中已经设置了取消自动升级,实际退出Firefox浏览器重新启动浏览器后还是会升级到最新版本. 影响: Firefox浏览器不同的版本的插件的支持兼容不 ...
- 如何刷新微信服务器小程序版本,微信小程序版本自动更新
最近在做一个小程序每次更新版本之后都需要删除小程序,再次扫码进入才可以看到新版本,接下来吾爱编程为大家介绍一下微信小程序版本自动更新的方法,有需要的小伙伴可以参考一下: 1.启动机制: (1).热启动 ...
- 微信小程序版本自动更新用户感知提示方案总结
微信小程序版本自动更新用户感知提示方案总结 需求背景 最近基于uniapp开发微信小程序上线后,在迭代版本后期望自动更新提示. 使感知. 解决方案 使用全局唯一的对象: updateManager. ...
- 微信小程序版本自动更新
我是在app.js里进行版本检查 (页面最好有加载动图效果) onLaunch: function() {// 展示本地存储能力var logs = wx.getStorageSync('logs') ...
- 小程序上线发布后,实现版本自动更新,用户无感知
欢迎关注微信公众号:[ 全栈攻略 ] 直接上代码,用的都是小程序的API. /*** 检测当前的小程序是否是最新版本,判断是否需要下载.更新当前小程序*/ function checkUpdateVe ...
- Chrome浏览器如何关闭自动更新
首先是[右键计算机->管理],在[计算机管理(本地)->系统工具->任务计划程序->任务计划程序库]中找到两个和Google自动更新相关的任务计划[GoogleUpdateTa ...
最新文章
- 对比学习(Contrastive Learning)综述
- Rest.Ler PHP API Server解决方案
- Linux 命令之 sudoedit -- 以另外一个用户身份编辑文件
- LeetCode 316. 去除重复字母 / 1081. 不同字符的最小子序列(单调栈)
- 使用Maven的jaxws-maven-plugin插件,将wsdl生成java
- 计算机等待程序关闭,教您win10系统关闭计算机弹出“等待后台程序关闭”无法关机的技巧...
- ireport怎么生成jasper文件
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题
- 杭州市建筑物矢量数据(Shp格式+带高度)
- FileRecv VNCViewer 使用方法
- python大漠插件官网视频教程_python调用大漠插件教程01注册大漠
- python txt追加写入_python 实现在txt指定行追加文本的方法
- vue 获取当前本机ip_Vue项目启动时自动获取本机IP地址
- 反应式框架Reactor中的Mono和Flux
- 百度快照劫持之JS劫持诊断与恢复教程
- 转载]“无法打开Internet站点 已终止操作”的解决方法
- python爬虫——GET请求百度关键词搜索案例
- c语言中ifelse语句的例子,ifelse语句例子
- Selenium学习 - 简介
- MDT CustomSettings.ini Tips Tricks