python版本更新是自动的吗_Python判断IEDriverServer是否最新版本并自动更新

#!/usr/bin/env python

# coding=UTF-8

'''

@Description: 用于将IEDriverServer更新为最新版本

@Author: wjx

@LastEditors: Please set LastEditors

@Date: 2019-03-15 10:56:34

@LastEditTime: 2019-03-17 00:52:33

依据网页上最新版本的命名规则获取最新的文件,所以如果网站命名规则改变的话,可能会获取到旧版

如果获取的版本不是最新,请手动到网站(http://selenium-release.storage.googleapis.com/index.html/)获取

'''

import requests

import re

import os

import zipfile

from lxml import etree

IEDRIVERSERVER_URL = 'http://selenium-release.storage.googleapis.com/'

IEDRIVERSERVER_API = f'{IEDRIVERSERVER_URL}?delimiter=/&prefix=' # 下载地址

PATH = ".\\drivers\\"

def get_latest_version(url):

'''查询最新的IEDriverServer版本'''

rep = requests.get(url)

tree = etree.fromstring(rep.content) # 接口返回的是XML文件,需要进行解析

name_space = '{' + tree.nsmap[None] + '}' # 获取XML的namespace

latest_version = '0'

for tag in tree.findall(f'.//{name_space}CommonPrefixes/{name_space}Prefix'): # 通过xpath定位,每个节点都有namespace

version = tag.text[:-1]

if version.replace('.', '').isdigit():

latest_version = compare(latest_version, version) or latest_version # 如果返回为None,说明相等,则直接拿上次的结果

return latest_version

def download_driver(download_url):

'''下载文件'''

file = requests.get(download_url)

with open(f"{PATH}IEDriverServer.zip", 'wb') as zip_file: # 保存文件到脚本所在目录

zip_file.write(file.content)

print('下载成功')

def get_version():

'''查询指定位置的IEDriverServer版本'''

# path = os.getcwd() # 获取当前工作路径

outstd2 = os.popen(f'{PATH}IEDriverServer.exe --version').read()

return outstd2.split(' ')[1]

def unzip_driver():

'''解压IEDriverServer压缩包到指定目录'''

f = zipfile.ZipFile(f"{PATH}IEDriverServer.zip", 'r')

for file in f.namelist():

f.extract(file, PATH)

def compare(a: str, b: str):

'''比较两个版本的大小,需要按.分割后比较各个部分的大小'''

lena = len(a.split('.')) # 获取版本字符串的组成部分

lenb = len(b.split('.'))

a2 = a + '.0' * (lenb-lena) # b比a长的时候补全a

b2 = b + '.0' * (lena-lenb)

for i in range(max(lena, lenb)): # 对每个部分进行比较,需要转化为整数进行比较

if int(a2.split('.')[i]) > int(b2.split('.')[i]):

return a

elif int(a2.split('.')[i]) < int(b2.split('.')[i]):

return b

else:# 比较到最后都相等,则返回None用于判断相等的情况

if i == max(lena, lenb)-1:

return None

if __name__ == "__main__":

latest_version = get_latest_version(IEDRIVERSERVER_API)

print('最新的IEDriverServer版本为:', latest_version)

version = get_version()

print('当前系统内的IEDriverServer版本为:', version)

if compare(version, latest_version): # 如果有返回值,说明不相等

print('当前系统内的IEDriverServer不是最新的,需要进行更新')

download_url = IEDRIVERSERVER_URL + latest_version + '/IEDriverServer_x64_' + latest_version + '.0.zip' # 拼接下载链接

print('文件下载路径:', download_url)

download_driver(download_url)

unzip_driver()

print('更新后的IEDriverServer版本为:', get_version())

else:

print('当前系统内的IEDriverServer已经是最新的')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值