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

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

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

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

1、前言

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

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

2、简介

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

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

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

  • ChromeDriver
  • EdgeChromiumDriver
  • GeckoDriver
  • IEDriver
  • OperaDriver

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

pip install webdriver_manager

3、示例

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

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

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

更新代码(导入webdriver-manager,运行脚本,webdriver-manager 将检查当前使用的浏览器版本,并自动下载/更新匹配的浏览器驱动程序,这样将始终保持浏览器版本与驱动程序是互相匹配的。)54h28资讯网——每日最新资讯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 的。54h28资讯网——每日最新资讯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() 进行设置。54h28资讯网——每日最新资讯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系列—— 如何发送消息

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    来源:视听观察永恒文希传媒作为一家MCN公司,说起它的名字来,可能大家会觉得有点儿陌生,但是说出来下面一串的名字之后,或许大家就会感到震惊,原来这么多网红,都签约这家公司了。根
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为“纯欲天花板”的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • 认真聊聊东方甄选:如何告别低垂的果实

    来源:山核桃作者:财经无忌爆火一年后,俞敏洪和他的东方甄选依旧是颇受外界关心的“网红”。7月5日至9日,为期5天的东方甄选“甘肃行”首次在自有App内直播,
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
Top