本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/30759
一、Selenium Manager
1.1 简介
- Selenium Manager为Selenium提高自动化的驱动程序和浏览器管理。
- Selenium绑定默认使用此工具,因此无需下载,也无需在代码中添加任何内容,或进行其他操作,即可使用。
1.2 为什么会出现Selenium驱动管理器
- Selenium的使用依赖两个关键要素:浏览器及其对应的驱动。
- 在初始阶段,用户需要手动下载并配置浏览器驱动的环境。然而,由于浏览器频繁的更新,导致驱动版本也需要跟着更新,为解决这一问题,出现了三方的驱动管理工具,例如Java的WebDriverManager、Python的webdriver-manager等。
- 基于这个需求,Selenium官方推出了内置于4.6版本的驱动管理工具Selenium-Manager。
- Selenium-Manager提供一种便捷的方式,可以自动检测所需浏览器的版本,并下载相应的Web驱动程序,这样用户就无需手动下载和配置Web驱动程序,Selenium会自动处理这些步骤,从而增强了代码的可复用性和维护性。这一新特性使得在不同环境中,执行自动化测试变得更加轻松和高效。
1.3 自动浏览器管理
- Selenium Manager自动检查浏览器驱动是否安装,如果安装正确,则使用此驱动;如果不是,Selenium Manager将请求远程服务,从已有的存储中找到对应驱动下载。无论哪种情况,浏览器最终也会受到管理。
- 总之,无需手动更新driver。
- Chrome:基于Chrome for Testing(CFT) 从Selenium 4.11.0开始。- Firefox:基于公开的Firefox版本,从Selenium 4.12.0开始。- Edge:计划用于Selenium 4.13.0。
1.4 Selenium-Manager的下载及使用
1.4.1 下载
- Selenium 4.6 版本及以上会自动内置Selenium Manager。
- Selenium低于此版本,需要自行安装第三方依赖,以下是Python环境的依赖安装指南:
pip install selenium-manager
1.4.2 使用
from webdriver_manager.chrome import ChromeDriverManager
# 初始化 driver
server = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=server)
注意:安装完毕后,selenium-manager 的调用是 Selenium 自动调用的,当没有显性设置浏览器驱动路径时,Selenium 会自动调用Selenium-Manager 来下载,管理驱动。
二、Selenium原理分析
2.1 简介
- Selenium是一个用于Web应用程序的自动化测试工具。Selenium测试能够直接在浏览器中执行,模拟真实的用户操作。
- 支持的浏览器包括IE(7,8,9,10,11)、Mozilla Firefox,Google Chrome,Opera等。这使得Selenium成为一个强大的跨浏览器测试工具,适用于各种Web应用程序的自动化测试需求。
2.2 Selenium自动化测试的三大组成
- 测试脚本:客户端脚本,使用Python或Java编写,负责定义测试逻辑和交互行为。
- 浏览器驱动:不同浏览器需要相应的驱动程序,用于实现对浏览器的控制。这是通过Selenium提供的Web Driver来实现的。其作用就是将测试脚本的指令转化为浏览器可执行的动作。
- 浏览器:测试目标,即被用于执行测试的浏览器。Selenium提供了各种主流浏览器的支持,包括Chrome。
2.3 Selenium是如何实现对浏览器的自动化测试
以Python代码为例:
2.3.1 注册谷歌浏览器驱动实例对象
from selenium import webdriver
driver = webdriver.Chrome()
代码:
webdriver.Chrome()
会执行一个cmd命令,该命令的目的是一个ChromeDriver.exe浏览器驱动程序。
事实上,我们手动点击浏览器时,也会在后台启动这样一个程序,因为这个驱动程序是控制浏览器各种操作的关键。
2.3.2 打开浏览器
driver.get("https://www.baidu.com/")
selenium\webdriver\chrome\webdriver.py
这个代码里存在一个父类RemoteWebDriver
。- 当调用
driver.get("")
方法时,便会初始化这个父类,在这个父类的初始化函数中,便存在向服务器发送post请求的方法self.start_session(capabilities,browser_profile)
返回一个sessionId,用以表明当前浏览器页面的会话对象。
2.3.3 操作浏览器
- 找到元素并进行点击操作
driver.findelement(By.Id,"asd").click()
2.3.4 浏览器操作接口地址
- 包:
selenium.webdriver.remote.remote_connection import RemoteConnection
里定义了 selenium 操作需要的接口地址。
2.3.5 如何操作这些接口来实现浏览器控制
- 使用
execute
方法调用_request
方法通过urilib3
标准库向服务器发送对应操作请求地址,进而实现浏览器操作。 - 至于如何将这些操作与操作的对象联系起来,则需要前面打开浏览器页面时返回sessionId来完成意义对应。
2.3.6 总结
- 浏览器运行的逻辑,是浏览器本身是通过浏览器驱动来操作的,厂商在开发浏览器时,会将对浏览器所有的操作接口地址封装在对应浏览器的驱动程序里。当外界需要操控浏览器时,就需要去调用这些接口。
- selenium自动化测试中selenium本身针对不同的浏览器,创建了不同的第三方库,这些第三方库中,根据浏览器驱动的操作接口地址,封装了selenium操作的方法,在代码中使用不同的selenium操作方法,会访问对应的驱动操作接口地址。
推荐学习
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)
【霍格沃兹测试开发】6 小时轻松上手功能测试/ 软件测试工作流程/ 测试用例设计/Bug 管理
【霍格沃兹测试开发】零基础小白如何使用Postman ,从零到一做接口自动化测试/ 从零基础到进阶到实战
【霍格沃兹测试开发】建议收藏全国CCF 测试开发大赛Python 接口自动化测试赛前辅导 / 项目实战
更多软件测试开发视频教程点此
软件测试职业发展
零基础入门
测试必备编程篇
自动化测试
性能测试
测试管理
工程效能篇
面试求职篇
软件测试的面试宝典,内含一线互联网大厂面试真题、面试技巧、软件测试面试简历指导,免费领取!
版权归原作者 测试开发软件测试性能测试自动化测试 所有, 如有侵权,请联系我们删除。