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/folderwebdriver-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相关推荐

  1. 火狐浏览器怎么关闭自动更新 火狐浏览器关闭自动更新的方法

    火狐浏览器怎么关闭自动更新?很多用户觉得更新完新版本,用起来很不习惯.要怎么才能不自动更新呢,下面就给大家分享具体步骤. 首先我们要做的当然是打开你的火狐浏览器了,如果菜单栏在的话,点击工具选项. 火 ...

  2. android 系统(143)---Android实现App版本自动更新

    Android实现App版本自动更新 现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器 ...

  3. iOS APP版本自动更新

    1.版本自动更新一般采用API对应的方式 获取当前App Store上版本号 于本地存储的版本号对比 2.由服务端返回版本控制升级(容易审核不通过) 参考地址(很详细) https://blog.cs ...

  4. Firefox浏览器强制取消自动更新

    问题:  Firefox浏览器,在浏览器的设置中已经设置了取消自动升级,实际退出Firefox浏览器重新启动浏览器后还是会升级到最新版本.  影响:  Firefox浏览器不同的版本的插件的支持兼容不 ...

  5. 如何刷新微信服务器小程序版本,微信小程序版本自动更新

    最近在做一个小程序每次更新版本之后都需要删除小程序,再次扫码进入才可以看到新版本,接下来吾爱编程为大家介绍一下微信小程序版本自动更新的方法,有需要的小伙伴可以参考一下: 1.启动机制: (1).热启动 ...

  6. 微信小程序版本自动更新用户感知提示方案总结

    微信小程序版本自动更新用户感知提示方案总结 需求背景 最近基于uniapp开发微信小程序上线后,在迭代版本后期望自动更新提示. 使感知. 解决方案 使用全局唯一的对象: updateManager. ...

  7. 微信小程序版本自动更新

    我是在app.js里进行版本检查 (页面最好有加载动图效果) onLaunch: function() {// 展示本地存储能力var logs = wx.getStorageSync('logs') ...

  8. 小程序上线发布后,实现版本自动更新,用户无感知

    欢迎关注微信公众号:[ 全栈攻略 ] 直接上代码,用的都是小程序的API. /*** 检测当前的小程序是否是最新版本,判断是否需要下载.更新当前小程序*/ function checkUpdateVe ...

  9. Chrome浏览器如何关闭自动更新

    首先是[右键计算机->管理],在[计算机管理(本地)->系统工具->任务计划程序->任务计划程序库]中找到两个和Google自动更新相关的任务计划[GoogleUpdateTa ...

最新文章

  1. 对比学习(Contrastive Learning)综述
  2. Rest.Ler PHP API Server解决方案
  3. Linux 命令之 sudoedit -- 以另外一个用户身份编辑文件
  4. LeetCode 316. 去除重复字母 / 1081. 不同字符的最小子序列(单调栈)
  5. 使用Maven的jaxws-maven-plugin插件,将wsdl生成java
  6. 计算机等待程序关闭,教您win10系统关闭计算机弹出“等待后台程序关闭”无法关机的技巧...
  7. ireport怎么生成jasper文件
  8. netstat监控大量ESTABLISHED连接与Time_Wait连接问题
  9. 杭州市建筑物矢量数据(Shp格式+带高度)
  10. FileRecv VNCViewer 使用方法
  11. python大漠插件官网视频教程_python调用大漠插件教程01注册大漠
  12. python txt追加写入_python 实现在txt指定行追加文本的方法
  13. vue 获取当前本机ip_Vue项目启动时自动获取本机IP地址
  14. 反应式框架Reactor中的Mono和Flux
  15. 百度快照劫持之JS劫持诊断与恢复教程
  16. 转载]“无法打开Internet站点 已终止操作”的解决方法
  17. python爬虫——GET请求百度关键词搜索案例
  18. c语言中ifelse语句的例子,ifelse语句例子
  19. Selenium学习 - 简介
  20. MDT CustomSettings.ini Tips Tricks

热门文章

  1. excel函数学习整理
  2. string 逆序简单方法
  3. 波斯顿翻跟头机器人_翻跟头和大圣有的一拼 波士顿动力机器人演示惊艳
  4. 如何在colab中加载数据集并且运行文件
  5. Java对接银联支付
  6. 游戏用户体验设计洞察之《行尸走肉》
  7. 从贝叶斯理论到图像马尔科夫随机场
  8. 藏宝图(BFS+DFS)
  9. 【CSS】解决多行英文单词时,右侧英文单词不断开换行
  10. vivo的Android版本功能,vivo用户让人羡慕!Android Q尝鲜升级教程,这三款机型提前体验...