Selenium自动化测试之自动管理不同浏览器驱动程序
一、背景
在以前,用Selenium做自动化测试时,你需要下载不同浏览器的驱动程序,并把它们解压到您的电脑上的某个地方,并设置路径,类似这样
from selenium import webdriver
driver = webdriver.Chrome('/home/user/drivers/chromedriver')
如果浏览器更新了,那么你还得去专门更新你的浏览器驱动程序driver,这显得非常的不智能,那么是否有更好的办法呢,确实是有的,你只需要安装一个第三方库,然后脚本简单修改一下,就可以自动化的更新浏览器驱动,具体如下:
二、安装
安装 webdriver-manager 库:在终端下使用 pip 命令进行安装。
pip install webdriver-manager
三、使用
测试脚本中导入相应的类和库
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
1、chrome浏览器
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver = webdriver.Chrome(ChromeDriverManager(version="2.41").install())
# 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()))
其中,ChromeDriverManager().install()
会自动下载最新的 Chrome 驱动程序到临时目录,并返回该驱动程序的路径,这样就不用手动下载或管理驱动程序了。
2、edge浏览器
# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))
3、Firefox浏览器
# selenium 3
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
4、测试脚本修改
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
# 获取浏览器名称和版本号
browser_name = "chrome" # 可选 "chrome", "firefox", "edge"
browser_version = "latest" # 版本号,可选 "latest" 或具体版本号,如 "91.0.4472.77"
# 根据浏览器名称选择相应的驱动程序
if browser_name == "chrome":
driver = webdriver.Chrome(ChromeDriverManager(version=browser_version).install())
elif browser_name == "firefox":
driver = webdriver.Firefox(executable_path=GeckoDriverManager(version=browser_version).install())
elif browser_name == "edge":
driver = webdriver.Edge(EdgeChromiumDriverManager(version=browser_version).install())
# 打开网址
driver.get("https://www.baidu.com")
# 其他操作...
# 关闭浏览器
driver.quit()