UI自动化告别手动下载驱动(使用WebDriverManager 自动下载管理driver)

使用背景:

WEB端浏览器经常需不断更新,虽然可以设置不自动更新,但是有时出现漏洞等原因不得不更新,运行用例时才发现当前版本的Chromedriver已经不能支持去驱动最新的Chrome浏览器之类,这时候才发现需要去更新driver,这时候我们通常的解决办法如下:

1、百度找到对应的Chromedriver,下载解压

2、覆盖添加到Chromedriver的目录

3、如果是mac 还要为新下载的Chromedriver授权

每次都手动更新,还是感觉很麻烦,原则上来说只能说半自动化,以下我们就来说明下怎么自动实现这个操作:

 

WebDriverManager就可以根据不同浏览器自动下载对应版本的driver

一、WebDriverManager简介

  WebDriverManager以完全自动化的方式执行Selenium WebDriver所需的驱动程序的管理(如下载、设置和维护)。另外,在版本5中,WebDriverManager还提供了其他相关功能,比如发现安装在本地系统中的浏览器,构建WebDriver对象(ChromeDriver、FirefoxDriver、EdgeDriver等),在Docker容器中无缝运行浏览器,以及监控功能。而且它支持java 和python。

 

二、WebDriverManager 安装(python)

方法1安装失败的可以通过方法2或3

1、命令安装 pip install webdriver-manager

2、通过国内镜像安装:只需要到cmd当中输入指令pip install -i https源地址 库名 即可

3、如果还安装失败就只能下载到本地再命令行安装

 

三、使用(以python-chrome为例)

1、selenium3.x的用法

# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

2、selenium 4.x的用法

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

其他浏览器可参考:https://pypi.org/project/webdriver-manager/#use-with-chrome

3、从源码可以看出这里的基本的逻辑是将Chromedriver安装在某个目录下,将driver的目录返回给我们,创建对象的时候,将path 作为参数传入

如果每次创建driver 对象去驱动浏览器,都要去检测。会影响脚本的执行时间,所以我们可以去优化下这个脚本

# 获取driver 存放地址
path = config.chromedriver_path
try:
driver = webdriver.Chrome(options=options,executable_path=path)
driver.get(tets_url)
except:
# 异常时,再去下载driver(获取失败:地址错误/版本过期)
new_path = ChromeDriverManager().install()
driver = webdriver.Chrome(options=options,executable_path=new_path)
driver.get(test_url)
  # 将地址存到文件中,如:.yaml文件:修改文件内容
  chage_yaml_data(file,key,data)

4、结果输出:如下使用正常

 

==================如果对你有帮助,麻烦点个赞======================

=====有任何疑问,欢迎加QQ 350781522(加时请备注来源)=====

  

posted on 2022-07-15 08:29  batteys  阅读(2245)  评论(0编辑  收藏  举报