当前位置:首页 >百科 >使用Webdriver 并自动下载对应浏览器驱动

使用Webdriver 并自动下载对应浏览器驱动

2024-05-15 01:21:49 [百科] 来源:避面尹邢网

使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的使用问题

作者:Meng 开发 测试 使用 Webdriver-manager,它可以帮助我们自动识别当前运行环境下的使用系统信息以及对应浏览器信息,并自动下载对应浏览器驱动。使用Webdriver-manager 库提供了自动管理不同浏览器驱动程序的使用方法。

1、使用前言

在我们使用 Selenium 进行 UI 自动化测试时,使用常常会因为浏览器驱动与浏览器版本不匹配,使用而导致自动化测试无法执行,使用需要手动去下载对应的使用驱动版本,并替换原有的使用驱动,可能还会遇到跨操作系统进行测试的使用时候,以及浏览器自动升级后,使用也会导致与驱动不匹配的使用问题。

使用Webdriver 并自动下载对应浏览器驱动

为了解决这个问题,使用可以使用 webdriver-manager,使用它可以帮助我们自动识别当前运行环境下的系统信息以及对应浏览器信息,并自动下载对应浏览器驱动。

使用Webdriver 并自动下载对应浏览器驱动

2、简介

webdriver-manager 库提供了自动管理不同浏览器驱动程序的方法。

使用Webdriver 并自动下载对应浏览器驱动

主要思想是简化不同浏览器的二进制驱动程序的管理。

目前支持:

  • ChromeDriver
  • EdgeChromiumDriver
  • GeckoDriver
  • IEDriver
  • OperaDriver

安装:

pip install webdriver_manager

3、示例

原始代码:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试from selenium import webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')

运行后报错,发现此版本的 ChromeDriver 与当前浏览器版本不匹配,无法执行。

更新代码(导入webdriver-manager,运行脚本,webdriver-manager 将检查当前使用的浏览器版本,并自动下载/更新匹配的浏览器驱动程序,这样将始终保持浏览器版本与驱动程序是互相匹配的。)

#!/usr/bin/env python# -*- coding: utf-8 -*-# 公众号:AllTests软件测试from selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerdriver = webdriver.Chrome(executable_path=ChromeDriverManager().install())driver.get('https://www.baidu.com/')

4、更多

作者在示例中使用的是 Selenium 3,webdriver-manager 也支持 Selenium 4 的。

Chrome

# selenium 3from selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerdriver = webdriver.Chrome(ChromeDriverManager().install())
# selenium 4from selenium import webdriverfrom selenium.webdriver.chrome.service import Service as ChromeServicefrom webdriver_manager.chrome import ChromeDriverManagerdriver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

Chromium

# selenium 3from selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerfrom webdriver_manager.core.utils import ChromeTypedriver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())
# selenium 4from selenium import webdriverfrom selenium.webdriver.chrome.service import Service as ChromiumServicefrom webdriver_manager.chrome import ChromeDriverManagerfrom webdriver_manager.core.utils import ChromeTypedriver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))

Brave

# selenium 3from selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerfrom webdriver_manager.core.utils import ChromeTypedriver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install())
# selenium 4from selenium import webdriverfrom selenium.webdriver.chrome.service import Service as BraveServicefrom webdriver_manager.chrome import ChromeDriverManagerfrom webdriver_manager.core.utils import ChromeTypedriver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))

Edge

# selenium 3from selenium import webdriverfrom webdriver_manager.microsoft import EdgeChromiumDriverManagerdriver = webdriver.Edge(EdgeChromiumDriverManager().install())
# selenium 4from selenium import webdriverfrom selenium.webdriver.edge.service import Service as EdgeServicefrom webdriver_manager.microsoft import EdgeChromiumDriverManagerdriver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))

Firefox

# selenium 3from selenium import webdriverfrom webdriver_manager.firefox import GeckoDriverManagerdriver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
# selenium 4from selenium import webdriverfrom selenium.webdriver.firefox.service import Service as FirefoxServicefrom webdriver_manager.firefox import GeckoDriverManagerdriver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))

IE

# selenium 3from selenium import webdriverfrom webdriver_manager.microsoft import IEDriverManagerdriver = webdriver.Ie(IEDriverManager().install())
# selenium 4from selenium import webdriverfrom selenium.webdriver.ie.service import Service as IEServicefrom webdriver_manager.microsoft import IEDriverManagerdriver = webdriver.Ie(service=IEService(IEDriverManager().install()))

Opera

# selenium 3from selenium import webdriverfrom selenium.webdriver.chrome import servicefrom webdriver_manager.opera import OperaDriverManagerwebdriver_service = service.Service(OperaDriverManager().install())webdriver_service.start()driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)
# selenium 4from selenium import webdriverfrom selenium.webdriver.chrome import servicefrom webdriver_manager.opera import OperaDriverManagerwebdriver_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)

自定义日志记录

如果需要使用自定义日志记录,可以创建一个记录器并使用 set_logger() 进行设置。

import loggingfrom webdriver_manager.core.logger import set_loggerlogger = logging.getLogger("custom_logger")logger.setLevel(logging.DEBUG)logger.addHandler(logging.StreamHandler())logger.addHandler(logging.FileHandler("custom.log"))set_logger(logger)
责任编辑:姜华 来源: AllTests软件测试 UI 自动化测试Selenium

(责任编辑:热点)

    推荐文章
    热点阅读