「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」
前言
今日给组内做自动化技术分享,教手工人员安装搭建自动化环境,
一个认真实践的小伙伴发来问题:我按照你说的,下载浏览器版本对应的webdriver版本,怎么运行的时候还是报错?
我:你环境变量设置了么
他:我设置了啊,我把driver放在和浏览器安装路径下,难道必须按你说的放到python安装目录下
我:no no no, 放到哪里都行,只要你环境变量设置好你能找到它,来让我仔细看看
原来是他的浏览器自动更新了,又重新下载了一个,也设置了环境变量,但是原来设置的没有删掉,导致运行的时候还是会默认找第一次设置的那个driver,把第一个的环境变量删掉就好了。
这里就引发了一个问题,有些浏览器会默默自动更新在你不知道的情况下,这样就总会频繁的去下载最新版本的webdriver, 那有没有一种方式,可以自动维护浏览器的webdriver呢,答案是可以的。
webdriver manager
还记得我有篇文章,带你了解webdriver的使用 这里面提过一嘴 以代码层面可以这样使用
pip install webdriver-manager
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
这样就不用自己手工去下载浏览器对应的webdriver版本,而是脚本执行的时候,会通过webdriver manager安装浏览器驱动
RF中使用webdriver manager
我们的框架用的是robot framework, 那在robot framework中如何使用呢,可以自己写一个库,供RF调用 driver_manager.py:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
def get_chromedriver_path():
driver_path = ChromeDriverManager().install()
print(driver_path)
return driver_path
Then, in my robotframework tests, I add
Library driver_manager.py
${chromedriver_path} driver_manager.get_chromedriver_path
Create Webdriver chrome executable_path=${chromedriver_path}
Go to www.baidu.com