RF中如何使用webdriver manager

593 阅读2分钟

「这是我参与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