selenium【自动下载谷歌驱动】自动获取谷歌版本,并自动下载对应版本的chromedriver.exe

这篇具有很好参考价值的文章主要介绍了selenium【自动下载谷歌驱动】自动获取谷歌版本,并自动下载对应版本的chromedriver.exe。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

因为电脑google浏览器自动升级,还有就是其他同事使用的Google浏览器版本与自己的不一致,需要重复去下载,所有老是需要重新去下载驱动,很麻烦,所有写了一个自动下载驱动的方法。
当前方法只适配了Windows上的google驱动,其它系统和浏览器可以自己修改适配一下。

获取谷歌版本(获取google版本)

# __*__ coding:utf-8 __*__

import os

# 获取浏览器版本,windows
chromeV = os.popen('reg query "HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon" /v version').read().strip().split(" ")[-1]

定义下载驱动方法

# __*__ coding:utf-8 __*__

import logging
import os
import xml
import zipfile
import requests
from xml.etree import ElementTree
import re
import win32api, win32con


PATH = lambda x: os.path.abspath(os.path.join(os.path.dirname(__file__), x))

def downloadChromeDriver(chrome_version, platform='win'):
    """
    自动下载谷歌驱动
    :param chrome_version: 谷歌浏览器版本, 如:106.0.5249.119
    :param platform: 1.win  2.linux  3.mac
    """
    xmlns = '{http://doc.s3.amazonaws.com/2006-03-01}'
    url = 'http://chromedriver.storage.googleapis.com/?delimiter=/&prefix='
    resp = requests.get(url=url)
    # 读取字符串格式xml数据
    tree = xml.etree.ElementTree.fromstring(resp.text)
    CommonPrefixes_list = tree.findall('{}CommonPrefixes'.format(xmlns))
    for Prefix in CommonPrefixes_list:
        # 获取所有的驱动文件版本
        prefix_ = Prefix.findall('{}Prefix'.format(xmlns))[0].text
        if chrome_version[0:10] == prefix_[0:10]:
            resp = requests.get('{}{}'.format(url, prefix_))
            # 版本下各个系统版本谷歌驱动
            root = xml.etree.ElementTree.fromstring(resp.text)
            contents = root.findall('{}Contents'.format(xmlns))
            for con in contents:
                # print(con.tag)
                headers = {
                    'Accept-Encoding': 'gzip, deflate',
                    'Accept-Language': 'zh-CN,zh;q=0.9'
                }
                # 下载驱动
                # http://chromedriver.storage.googleapis.com/100.0.4896.20/chromedriver_win32.zip
                if 'Key' in con[0].tag and platform in con[0].text:
                    resp_zip = requests.get(url='http://chromedriver.storage.googleapis.com/'+con[0].text, headers=headers)
                    zipfile_name = con[0].text.split('/')[1]
                    with open(PATH(zipfile_name), 'wb') as zip:
                        zip.write(resp_zip.content)
                    break
            else:
                return 0
            # 解压驱动文件并替换
            zf = zipfile.ZipFile(zipfile_name, 'r')
            name_list = [item for item in zf.namelist()]
            for gz_item in name_list:
                f_data = zf.read(gz_item)
                with open(PATH("chromedriver.exe"), 'wb') as f:
                    # 保存解压出来的文件
                    f.write(f_data)
                logging.info('对应谷歌浏览器驱动版本下载成功')
            zf.close()
            # 删除zip压缩包文件
            os.remove(PATH('chromedriver_win32.zip'))
            return 1
    else:
        logging.error('没有找到 {} 版本的驱动。请手动前往下载:{}'.format(chrome_version, url))
    return 0

下载逻辑判断

1、本地不存在驱动,直接下载
2、存在且版本与浏览器版本匹配,则跳过
3、存在但版本跟浏览器匹配不上,则自动下载文章来源地址https://www.toymoban.com/news/detail-508037.html

# 如果没有谷歌驱动,自动下载驱动
if not os.path.isfile(PATH("chromedriver.exe")):
	dret = downloadChromeDriver(chromeV)
    logging.info('google驱动自动下载成功') if dret == 1 else logging.error('google驱动下载失败!')

# 启动浏览器
s = Service(executable_path=PATH("chromedriver.exe"))
options = webdriver.ChromeOptions()
# 禁用日志--因为cmd运行的时候出现日志打印,且展示为乱码
options.add_experimental_option('excludeSwitches', ['enable-logging'])


# 方法一:如果驱动有,则尝试使用旧的驱动启动,启动失败则自动下载更新驱动
try:
	driver = webdriver.Chrome(service=s, options=options)
except Exception as e:
    logging.info('启动失败当前驱动可能与浏览器不匹配,更新一下驱动\n{}'.format(e))
    downloadChromeDriver(chromeV)
    driver = webdriver.Chrome(service=s, options=options)


# 方法二:获取驱动的版本,和浏览器版本对比

# 获取google驱动版本
chromedriver_version = os.popen(PATH('chromedriver.exe')).read().strip().split(' ')[2]

# 如果没有谷歌驱动,自动下载驱动
if chromeV[0:10] != chromedriver_version[0:10]:
    os.remove('chromedriver.exe')
    dret = downloadChromeDriver(chromeV)
    logging.info('当前驱动可能与浏览器版本相差过大,更新驱动成功') if dret == 1 else logging.error('google驱动下载失败!')
else:
    logging.info('当前驱动与浏览器版本匹配,无需更新驱动')



到了这里,关于selenium【自动下载谷歌驱动】自动获取谷歌版本,并自动下载对应版本的chromedriver.exe的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium webdriver_manager根据浏览器版本自动下载对应驱动程序

    webdriver_manager是什么? webdriver_manager 是 Python 中的一个库,用于管理 Web 驱动程序。它的作用是自动下载和设置不同浏览器(如 Chrome、Firefox、Edge 等)的 Web 驱动程序,以便在自动化测试中使用这些浏览器。 在进行 Selenium 测试时,需要一个与浏览器相匹配的 Web 驱动程序,以

    2024年02月11日
    浏览(52)
  • ChromeDriver | 谷歌浏览器驱动下载地址 及 浏览器版本禁止更新

    在使用selenoum时,需要chrome浏览器的版本和chrome浏览器驱动的版本一致匹配,才能进行自动化测试 国内可以搜到的谷歌浏览器下载地址里面最新的驱动器只有114版本的 CNPM Binaries Mirror 在其他博主那找到了最新版本12X的谷歌驱动器下载地址,里面有最新的版本:Chrome for Testin

    2024年02月21日
    浏览(109)
  • Selenium安装WebDriver:最新ChromeDriver谷歌驱动及闪退等常见问题(114及其以后的版本)

    点击进去可以看到下载链接   截止2023.9.12我的谷歌浏览器版本是 116.0.5845.188(正式版本) 我选择了  116.0.5845.96  ( r1160321 )(最后一个) 随着版本更新,大家要根据自己浏览器版本进行选择相应驱动,尽量保证驱动版本和浏览器版本一致,前三位保持一致一般就可以正常使

    2024年02月22日
    浏览(89)
  • Selenium安装WebDriver:ChromeDriver谷歌浏览器驱动下载安装与使用最新版118/119/120

    在使用之前的代码通过selenium操作Chrome浏览器时,安装中遇到了Chrome版本与浏览器驱动不匹配的的问题,在此记录安装下过程 我们首先确定自己的Chrome版本 Chrome设置-关于Chrome 可以看到,当前chrome是最新版本:119.0.6045.124(正式版本) (64 位)。 或者在浏览器的地址栏,输入

    2024年02月05日
    浏览(68)
  • selenium 谷歌驱动(ChromeDriver)安装教程

    首先,下载与当前Chrome对应的chromedriver.exe 打开谷歌浏览器 找到帮助-关于 Google Chrome  查看版本号如果显示无法更新,可以在凌晨时分进去查看,会更容易建立连接 第二,下载chromedriver驱动包 下载地址:http://chromedriver.storage.googleapis.com/index.html 选择与自己的谷歌版本相近的

    2024年02月11日
    浏览(71)
  • selenium下载安装对应的chromedriver并执行

    selenium Selenium 是广泛使用的模拟浏览器运行的库,它是一个用于 Web 应用程序测试的工具。 Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样,并且支持大多数现代 Web 浏览器。 对应版本chrome驱动下载 查看浏览器对应的chrome版本 浏览器输入 chrome://version/ 114以及之

    2024年02月05日
    浏览(47)
  • 安装selenium和关于chrome高版本对应的driver驱动下载安装【Win/Mac 】

    目录 一、查看自己电脑上chrome的版本 二、下载 ChromeDriver  三、安装selenium 法一:打开pycharm,点击File,Setting进入配置页面,点击Project下面的Python Interpreter进入环境配置页面,点击+。输入selenium。之后install 四、环境配置 五、验证安装 一、查看自己电脑上chrome的版本 二、下

    2024年04月11日
    浏览(51)
  • python selenium对应的浏览器chromedriver版本不一致

    报错:session not created: This version of ChromeDriver only supports Chrome version google浏览器对应解决方法 这是因为python使用selenium调用模块的时候,会用chromedriver去调用google浏览器。chrome和chromedriver版本不一致导致的,我们只需要升级下chromedriver的版本即可 浏览器版本查看 查看chromedri

    2024年02月07日
    浏览(57)
  • Selenium 与(Firefox、GeckoDriver)和(Chrome、ChromeDriver)版本对应关系

    找了一圈,竟然一个靠谱的版本对应表都找不到,这里整理一下 Selenium ChromeDriver Chrome GeckoDriver Firefox 文档地址:Geckodriver Supported platforms geckodriver Selenium Firefox 0.32.0 ≥ 3.11 (3.14 Python) 102 ESR - n/a 0.31.0 ≥ 3.11 (3.14 Python) 91 ESR - n/a 0.30.0 ≥ 3.11 (3.14 Python) 78 ESR - 90 0.29.1 ≥ 3.11 (3.14

    2024年01月18日
    浏览(45)
  • 谷歌chrome浏览器所有历史版本下载及selenium自动化控制插件资源分享

    使用python + selenium做网页自动化开发的小伙伴经常需要用到google chrome浏览器以及chromedriver插件。     谷歌浏览器所有历史版本下载链接: chrome历史版本,点击下载 chromedriver插件下载地址: 下载链接1:点击下载 下载链接2:点击下载 chromedriver插件与浏览器版本有对应关系,

    2024年02月14日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包