首页 > 编程语言 >python webdriver-manager 实现selenium 免下载安装webdriver

python webdriver-manager 实现selenium 免下载安装webdriver

时间:2024-11-06 16:08:51浏览次数:3  
标签:webdriver 浏览器 Webdriver python Manager manager 下载安装 import

selenium在自动化测试中,通常需要使用浏览器驱动来与浏览器进行交互。然而,手动下载、安装、以及管理这些驱动非常麻烦,尤其是当驱动版本频繁更新时。为此,webdriver-manager库提供了一个极简的方案,自动帮我们下载、更新和管理驱动,使 Selenium 代码更简洁优雅。

webdriver-managergit地址:GitHub - SergeyPirogov/webdriver_manager

webdriver对比

在没有 Webdriver Manager 的情况下,我们需要手动完成以下步骤:

  1. 下载对应浏览器的驱动程序。
  2. 将其解压到本地路径。
  3. 在代码中手动指定驱动路径。

每当驱动更新时,这个流程需要重复。使用 Webdriver Manager 后,我们只需两步:

  1. 安装 Webdriver Manager
  2. 在代码中调用 Webdriver Manager 进行驱动自动下载和管理。

支持的浏览器

webdriver-manager 是一个 Python 库,它的主要作用是自动管理不同浏览器的驱动程序。支持的浏览器包括:

  • Chrome
  • Edge
  • Firefox
  • IE
  • Opera

使用教程

安装Webdriver Manager

pip install webdriver-manager

在代码中使用

1、使用Chrome驱动

在 Selenium 3 和 Selenium 4 中,代码略有不同:
查看Selenium版本:

pip list | grep selenium

Selenium 3

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

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()))

2.其他浏览器中使用

类似地,Webdriver Manager 也支持 Edge、Firefox、IE 和 Opera 浏览器。这里以 Edge 和 Firefox 为例:

  • Edge

    from selenium import webdriver
    from webdriver_manager.microsoft import EdgeChromiumDriverManager
    
    driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))
    
  • Firefox

    from selenium import webdriver
    from webdriver_manager.firefox import GeckoDriverManager
    
    driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
    

Webdriver Manager 会自动检测系统和浏览器的版本,并下载相应的驱动,非常适合那些需要频繁更新的项目。

Webdriver Manager 的高级配置

Webdriver Manager 允许通过环境变量或代码直接设置多个配置。以下是一些常见的配置项:

  • GitHub Token (GH_TOKEN):有时候从 GitHub 下载驱动会受限,设置 GitHub Token 可以绕过这个问题。

    import os
    os.environ['GH_TOKEN'] = 'your_github_token'
    
  • 日志级别 (WDM_LOG):可以关闭 Webdriver Manager 的日志输出。

    os.environ['WDM_LOG'] = '0'
    
  • 缓存管理:默认情况下,驱动的缓存时间为 1 天,可以通过 cache_valid_range 参数自定义缓存时间。

    from webdriver_manager.chrome import ChromeDriverManager
    from webdriver_manager.core.driver_cache import DriverCacheManager
    
    ChromeDriverManager(cache_manager=DriverCacheManager(valid_range=7)).install()
    

总结

webdriver-manager 简化了浏览器驱动管理,让我们的自动化测试更加简洁高效。只需几行代码,我们就可以轻松地集成不同的浏览器驱动,专注于测试逻辑,而不用担心驱动版本的更新和路径配置。

标签:webdriver,浏览器,Webdriver,python,Manager,manager,下载安装,import
From: https://www.cnblogs.com/mt-loading/p/18530462

相关文章

  • 安卓端和鸿蒙性能测试环境脚本-sh+python
    背景:做安卓和鸿蒙性能测试,需要搭建环境,把常用的几个pip包和虚拟环境等记录一下,在新的电脑上可以快速安装(仅作为个人记录)准备工作mac电脑python版本>=3.7.9sh脚本#!/usr/local/bin/bash##########################################################################Fil......
  • python之base64与字符串互相转化
    importbase64defstring_to_base64(input_string:str)->str:"""将字符串转换为Base64编码。参数:input_string(str):要转换的字符串。返回:str:Base64编码后的字符串。"""#将字符串转换为字节byte_data=input_string......
  • Python 爬取大量数据如何并发抓取与性能优化
    Python并发抓取与性能优化在进行网络爬虫开发时,爬取大量数据可能非常耗时。尤其是在处理许多网页或API请求时,逐个请求速度会非常慢。为了解决这个问题,我们可以通过并发抓取提高爬取效率。同时,通过性能优化来进一步减少耗时和资源占用,使爬虫更高效。本篇文章将带大家了解......
  • Python 使用 Selenium 如何抓取动态网页
    Python动态网页抓取:基础教程在如今的网络中,许多网站是“动态”的,即网页内容不是静态的HTML文件,而是由JavaScript动态生成的。这种动态网页在数据抓取中带来了一些挑战,因为传统的HTML抓取方法无法抓取JavaScript生成的内容。在本教程中,我们将详细介绍如何使用Pyth......
  • Python 继承、多态、封装、抽象
    面向对象编程(OOP)是Python中的一种重要编程范式,它通过类和对象来组织代码。OOP的四个核心概念是继承(Inheritance)、多态(Polymorphism)、封装(Encapsulation)和数据抽象(DataAbstraction)。下面将详细介绍这四个概念。继承(Inheritance)继承是面向对象编程(OOP)的一个基本概念,它允......
  • [记录]安装 Python 中SPAM库失败
    报错信息:×pythonsetup.pyegg_infodidnotrunsuccessfully.│exitcode:1╰─>[41linesofoutput]runningegg_infocreating/private/var/folders/l9/f9rjm65s07bdf55y5xyk9f2c0000gn/T/pip-pip-egg-info-o3ic4gdp/progressbar.egg-infowriting/private/var/fo......
  • 如何通过Python SDK更新Collection中已存在的Doc
    本文介绍如何通过PythonSDK更新Collection中已存在的Doc。说明若更新Doc时指定id不存在,则本次更新Doc操作无效如只更新部分属性fields,其他未更新属性fields默认被置为NonePythonSDK1.0.11版本后,更新Doc时vector变为非必填项前提条件已创建Cluster:创建Cluster。......
  • 基于大数据 Python 校园食堂订餐数据分析系统(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......
  • 100种算法【Python版】第51篇——希尔排序
    本文目录1算法步骤2算法示例3python代码3.1代码说明3.2复杂度分析4算法优化4.1Shell原始增量序列4.2Hibbard增量序列4.3Knuth增量序列4.4Sedgewick增量序列4.5Tokuda增量序列4.6Pratt增量序列5不同的增量序列的效率对比希尔......
  • Python socket传输图像文件
    客户端发送图像文件importsocketdata=numpy.frombuffer(stringData,numpy.uint8)#将获取到的字符流数据转换成1维数组#decimg=cv2.imdecode(data,cv2.COLOR_BGR2GRAY)#将数组解码成图像#cv2.imwrite("./test.jpg",decimg)#imencode()将图片格式转换(编码)成流数据,......