赞
踩
在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还会遇到跨操作系统进行测试的时候,以及浏览器自动升级后,也会导致与驱动不匹配的问题。
为了解决这个问题,可以使用 webdriver-manager,它可以帮助我们自动识别当前运行环境下的系统信息以及对应浏览器信息,并自动下载对应浏览器驱动。
webdriver-manager 库提供了自动管理不同浏览器驱动程序的方法。
主要思想是简化不同浏览器的二进制驱动程序的管理。
目前支持:
ChromeDriver
EdgeChromiumDriver
GeckoDriver
IEDriver
OperaDriver
安装:
pip install webdriver_manager
原始代码:
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # 公众号:伤心的辣条
-
- from selenium import webdriver
-
- driver = webdriver.Chrome()
- driver.get('https://www.baidu.com/')
运行后报错,发现此版本的 ChromeDriver 与当前浏览器版本不匹配,无法执行。
更新代码(导入webdriver-manager,运行脚本,webdriver-manager 将检查当前使用的浏览器版本,并自动下载/更新匹配的浏览器驱动程序,这样将始终保持浏览器版本与驱动程序是互相匹配的。)
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # 公众号:伤心的辣条
-
- from selenium import webdriver
- from webdriver_manager.chrome import ChromeDriverManager
-
- driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
- driver.get('https://www.baidu.com/')
作者在示例中使用的是 Selenium 3,webdriver-manager 也支持 Selenium 4 的。
1、Chrome
- # selenium 3
- from selenium import webdriver
- from webdriver_manager.chrome import ChromeDriverManager
-
- driver = webdriver.Chrome(ChromeDriverManager().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()))
2、Chromium
- # selenium 3
- from selenium import webdriver
- from webdriver_manager.chrome import ChromeDriverManager
- from webdriver_manager.core.utils import ChromeType
-
- driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())
- # selenium 4
- from selenium import webdriver
- from selenium.webdriver.chrome.service import Service as ChromiumService
- from webdriver_manager.chrome import ChromeDriverManager
- from webdriver_manager.core.utils import ChromeType
-
- driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))
3、Brave
- # selenium 3
- from selenium import webdriver
- from webdriver_manager.chrome import ChromeDriverManager
- from webdriver_manager.core.utils import ChromeType
-
- driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install())
- # selenium 4
- from selenium import webdriver
- from selenium.webdriver.chrome.service import Service as BraveService
- from webdriver_manager.chrome import ChromeDriverManager
- from webdriver_manager.core.utils import ChromeType
-
- driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))
4、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()))
5、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()))
6、IE
- # selenium 3
- from selenium import webdriver
- from webdriver_manager.microsoft import IEDriverManager
-
- driver = webdriver.Ie(IEDriverManager().install())
- # selenium 4
- from selenium import webdriver
- from selenium.webdriver.ie.service import Service as IEService
- from webdriver_manager.microsoft import IEDriverManager
-
- driver = webdriver.Ie(service=IEService(IEDriverManager().install()))
7、Opera
- # selenium 3
- from selenium import webdriver
- from selenium.webdriver.chrome import service
- from webdriver_manager.opera import OperaDriverManager
-
- webdriver_service = service.Service(OperaDriverManager().install())
- webdriver_service.start()
-
- driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)
- # selenium 4
- from selenium import webdriver
- from selenium.webdriver.chrome import service
- from webdriver_manager.opera import OperaDriverManager
-
- webdriver_service = service.Service(OperaDriverManager().install())
- webdriver_service.start()
-
- options = webdriver.ChromeOptions()
- options.add_experimental_option('w3c', True)
-
- driver = webdriver.Remote(webdriver_service.service_url, options=options)
8、自定义日志记录
如果需要使用自定义日志记录,可以创建一个记录器并使用 set_logger() 进行设置。
- import logging
- from webdriver_manager.core.logger import set_logger
-
- logger = logging.getLogger("custom_logger")
- logger.setLevel(logging.DEBUG)
- logger.addHandler(logging.StreamHandler())
- logger.addHandler(logging.FileHandler("custom.log"))
-
- set_logger(logger)
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。