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(加时请备注来源)=====
本文来自博客园,作者:batteys,转载请注明原文链接:https://www.cnblogs.com/bao-yan/p/16480026.html
=====有任何疑问,欢迎加QQ 350781522(加时请备注来源)=====