当前位置:首页 > 科技  > 软件

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

来源: 责编: 时间:2023-08-05 11:46:03 4854观看
导读1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还会遇到跨操作系统进行测试的时候,以及浏览器

shL28资讯网——每日最新资讯28at.com

1、前言

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

为了解决这个问题,可以使用 webdriver-manager,它可以帮助我们自动识别当前运行环境下的系统信息以及对应浏览器信息,并自动下载对应浏览器驱动。shL28资讯网——每日最新资讯28at.com

2、简介

webdriver-manager 库提供了自动管理不同浏览器驱动程序的方法。shL28资讯网——每日最新资讯28at.com

主要思想是简化不同浏览器的二进制驱动程序的管理。shL28资讯网——每日最新资讯28at.com

目前支持:shL28资讯网——每日最新资讯28at.com

  • ChromeDriver
  • EdgeChromiumDriver
  • GeckoDriver
  • IEDriver
  • OperaDriver

安装:shL28资讯网——每日最新资讯28at.com

pip install webdriver_manager

3、示例

原始代码:shL28资讯网——每日最新资讯28at.com

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

运行后报错,发现此版本的 ChromeDriver 与当前浏览器版本不匹配,无法执行。shL28资讯网——每日最新资讯28at.com

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

#!/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 的。shL28资讯网——每日最新资讯28at.com

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() 进行设置。shL28资讯网——每日最新资讯28at.com

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)

本文链接:http://www.28at.com/showinfo-26-143-0.html使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一文掌握 Golang 模糊测试(Fuzz Testing)

下一篇: 三分钟白话RocketMQ系列—— 如何发送消息

标签:
  • 热门焦点
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • 一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
Top