Skip to content

Latest commit

 

History

History
186 lines (141 loc) · 5.71 KB

README.md

File metadata and controls

186 lines (141 loc) · 5.71 KB

注意: 此库弃用, 现在selenium4 已经自带自动下载驱动的功能了,这个不维护了

注意: 此库弃用, 现在selenium4 已经自带自动下载驱动的功能了,这个用不上了

注意: 此库弃用, 现在selenium4 已经自带自动下载驱动的功能了,这个用不上了

ez-webdriver

一个下载管理浏览器驱动的python库, 优先使用国内镜像源, 单文件少依赖,调用简单,复制即用,可作为 webdriver_manager 库的国内替代

  • 获取驱动时,优先用国内镜像源,下载更快
  • 下载的驱动永久保存,每次执行时判断旧版本数量,只保留一个旧版本驱动的冗余
  • 代码精简,单文件,只需复制 ez_webdriver.py 文件到自己项目即可使用
  • 修改方便,如果有新增镜像源,仅需写一个处理镜像源链接的函数即可
  • 可以识别arm平台

支持的浏览器/For now support:

谷歌浏览器/ChromeDriver 火狐浏览器/GeckoDriver Edge浏览器/EdgeChromiumDriver IE浏览器/IEDriver

演示

img

安装

方法1 : pip安装

pip install ez-webdriver

import ez_webdriver 
ez_webdriver.chrome()    # 返回驱动文件绝对路径(str)

方法2 : 拷贝 ez-webdriver.py 文件,直接使用

from ez_webdriver import chrome,firefox
chrome(version='107.0')  # 返回指定版本驱动文件绝对路径(str)

用法/Usage:

谷歌浏览器 火狐浏览器 Edge浏览器 IE浏览器
ez_webdriver.chrome() ez_webdriver.firefox() ez_webdriver.edge() ez_webdriver.ie()

以上4个方法, 均会返回一个驱动的 Path 对象,或者 False (自动下载对应驱动版本)

总之,仅需将上面4个之一赋值给 webdriver 的位置参数即可正常使用

# selenium 4 (省略部分import,见示例)
import ez_webdriver
driver = webdriver.Chrome(service=Service(ez_webdriver.chrome()))

# selenium 3 (省略部分import,见示例)
import ez_webdriver
driver = webdriver.Chrome(ez_webdriver.chrome())

# 其它浏览器同理,仅需更改 ez_webdriver 后的 chrome() 改成对应浏览器即可

示例

Chrome

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import ez_webdriver # 导入驱动管理模块

# 将 ez_webdriver.chrome() 传递给 server 参数即可
driver = webdriver.Chrome(service=Service(ez_webdriver.chrome()))
# selenium 3
from selenium import webdriver
import ez_webdriver # 导入驱动管理模块

# selenium 3 -->直接填入即可
driver = webdriver.Chrome(ez_webdriver.chrome())

Firfox

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import ez_webdriver # 导入驱动管理模块

# 将 ez_webdriver.firefox() 传递给 server 参数即可
driver = webdriver.Chrome(service=Service(ez_webdriver.firefox()))
# selenium 3
from selenium import webdriver
import ez_webdriver # 导入驱动管理模块

# selenium 3 -->直接填入即可
driver = webdriver.Chrome(ez_webdriver.firefox())

Edge

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import ez_webdriver # 导入驱动管理模块

# 将 ez_webdriver.edge() 传递给 server 参数即可
driver = webdriver.Chrome(service=Service(ez_webdriver.edge()))
# selenium 3
from selenium import webdriver
import ez_webdriver # 导入驱动管理模块

# selenium 3 -->直接填入即可
driver = webdriver.Chrome(ez_webdriver.edge())

IE

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import ez_webdriver # 导入驱动管理模块

# 将 ez_webdriver.ie() 传递给 server 参数即可
driver = webdriver.Chrome(service=Service(ez_webdriver.ie()))
# selenium 3
from selenium import webdriver
import ez_webdriver # 导入驱动管理模块

# selenium 3 -->直接填入即可
driver = webdriver.Chrome(ez_webdriver.ie())

全部函数及实现

  • chrome() 返回Path对象或Fase,自动获取浏览器驱动
  • firfox() 返回Path对象或Fase,自动获取浏览器驱动
  • edge() 返回Path对象或Fase,自动获取浏览器驱动
  • ie() 返回Path对象或Fase,自动获取浏览器驱动
  • clear_cache() 适用于浏览器驱动文件损坏的情况,将清除下载的驱动文件,估计不会被用上

函数参数

chrome() firfox() edge() ie() 均有如下参数

version: 三种参数 auto(匹配当前版本,默认)  latest(最新版本)  x.x.x(指定版本)
path: 可目录(指定放置驱动文件的目录),可文件(指定驱动文件的路径,用文件就是多此一举)
name: 下载的驱动文件名称(下载的文件名,除非镜像源的文件改名了,否则不要改动)
os_type: 默认自动检测,指定只能三选一 'linux'|'win'|'mac'

默认值: chrome(version="auto", path=None, name="chromedriver", os_type=None)

致谢

此模块参考了 webdriver_manager 的设计思路,

添加了国内镜像,每个浏览器均有至少两个下载镜像可用 弃用了缓存过期时间(cache_valid_range)的设定,改为了每次执行时判断是否有旧版本驱动,只保留一个冗余旧版本 弃用类,改用函数的形式,导入模块时不用那么复杂 获取浏览器版本时,优先用注册表,powershell备用(用的它的代码),占用少,响应更快