什么是 Selenium? 入门教程
什么是 Selenium?
Selenium 是一个免费的(开源)自动化测试框架,用于验证跨不同浏览器和平台的 Web 应用程序。您可以使用多种编程语言,例如 Java,C#, Python等来创建 Selenium 测试脚本。使用 Selenium 测试工具通常被称为 Selenium 测试.
专家见解
避免在测试中使用固定的睡眠延迟。相反,使用显式等待(例如 WebDriverWait)来等待元素加载。这使得你的脚本更可靠、更快速,因为它们会根据实际页面情况动态响应——这是世界各地学生的一项关键最佳实践,从 Selenium设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“
Selenium 工具套件
Selenium 软件不仅仅是一个工具,而是一套软件,每件软件都适用于不同的 Selenium 组织对 QA 测试的需求。以下是工具列表
- Selenium 集成开发环境 (IDE)
- Selenium 遥控器 (RC)
- 网络驱动程序
- Selenium 格
此刻, Selenium RC 和 WebDriver 合并为一个框架,形成 Selenium 2. Selenium 1,顺便说一下,指的是 Selenium RC。
视频教程 Selenium
点击 点击这里 如果视频无法访问
谁开发的 Selenium?
建立 Selenium 虽然它是一个由不同工具组成的集合,但它也有不同的开发者。以下是为它做出突出贡献的关键人物 Selenium 项目
首先, Selenium 是 由 Jason Huggins 于 2004 年创建。作为 ThoughtWorks 的一名工程师,他正在开发一款需要频繁测试的 Web 应用程序。他意识到应用程序重复的手动测试变得越来越低效,于是他创建了一个 JavaScript 一个可以自动控制浏览器操作的程序。他将这个程序命名为“Java脚本测试运行器设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“
他看到了这个想法有助于实现其他 Web 应用程序自动化的潜力,于是他 JavaScriptRunner 开源,后来更名 Selenium 核心科目对于那些有兴趣探索其他 Web 应用程序测试选项的人,请查看这些 Selenium 替代品.
同源策略问题
同源策略禁止 Java脚本代码访问来自与启动它的地方不同的域的元素。例如,www.google.com 中的 HTML 代码使用 Java脚本程序“randomScript.js”。同源策略只允许 randomScript.js 访问 google.com 内的页面,例如 google.com/mail、google.com/login 或 google.com/signup。但它无法访问来自不同站点的页面,例如 yahoo.com/search 或 guru99.com,因为它们属于不同的域。
这就是为什么 Selenium RC,测试人员需要安装两者的本地副本 Selenium 核心( Java脚本程序)和包含正在测试的 Web 应用程序的 Web 服务器,因此它们属于同一个域
诞生 Selenium 遥控 (Selenium RC)
不幸的是;测试人员使用 Selenium 由于 同源政策。 另一位 ThoughtWork 的工程师 保罗·哈曼特,决定创建一个充当 HTTP 代理的服务器来“欺骗”浏览器相信 Selenium 核心和被测试的 Web 应用程序来自同一个域。该系统被称为 Selenium 远程控制 or Selenium 1.
诞生 Selenium 格
Selenium Grid 是由 帕特里克·莱特博迪 以满足尽可能减少测试执行时间的需求。他最初称该系统为“托管 QA”它能够在重要阶段捕获浏览器截图,并且 发送中 Selenium 同时向不同的机器发出命令。
诞生 Selenium IDE
笠谷慎也 日本创造 Selenium IDE,以 Firefox 以及可以通过录制和回放功能自动化浏览器的 Chrome 扩展程序。他想出了这个想法,以进一步提高创建测试用例的速度。他捐赠了 Selenium IDE 到 Selenium 项目 2006.
WebDriver 的诞生
西蒙斯图尔特 创建 WebDriver 大约 2006 当浏览器和网络应用程序变得越来越强大,限制也越来越多时 Java脚本程序如下 Selenium 核心。 它是第一个可以从操作系统级别控制浏览器的跨平台测试框架。
诞生 Selenium 2
In 2008,整个 Selenium 团队决定合并 WebDriver 和 Selenium RC 形成一个更强大的工具,称为 Selenium 2, WebDriver 是核心。 目前, Selenium RC 仍在开发中,但仅处于维护模式。大多数 Selenium 项目目前的工作重点是 Selenium 2.
那么,为什么叫这个名字 Selenium?
名字 Selenium 源自 Jason 曾对他的团队开的一个玩笑。 Selenium的发展,另一个 自动化测试 框架是由一家名为 Mercury 互动 (是的,就是这家公司在被 HP 收购之前开发了 QTP)。 Selenium 是众所周知的解毒剂 Mercury 中毒,Jason 建议使用这个名字,他的队友也使用了。这就是我们一直沿用到现在的框架。
什么是 Selenium IDE?
Selenium 集成开发环境 (IDE) 是 最简单的框架 ,在 Selenium 套房和 最容易学的。 这是一个 Chrome和 Firefox 插入 你可以像安装其他插件一样轻松地安装它。但是,由于它的简单性, Selenium IDE 只能用作 原型制作工具。如果你想创建更高级的测试用例,你需要使用 Selenium RC 或 WebDriver。
什么是 Selenium 遥控 (Selenium RC 是什么?
Selenium RC 是 旗舰测试框架 整体上 Selenium 该项目已经进行了很长时间。这是第一个自动化 网络测试 工具 允许用户使用他们喜欢的编程语言从2.25.0版本开始,RC可以支持以下编程语言:
什么是 WebDriver?
WebDriver 被证明比 Selenium IDE 和 Selenium RC 在许多方面。它在自动化浏览器操作方面实现了更现代、更稳定的方法。与 Selenium RC,不依赖于 Java脚本 Selenium 自动化测试。 它通过直接与浏览器通信来控制浏览器。
支持的语言与 Selenium RC。
- Java
- C#
- PHP
- Python
- Perl的
- 红宝石
什么是 Selenium 网格?
Selenium 网格是一种工具 与 Selenium RC 运行 并行测试 跨不同的机器和不同的浏览器同时运行。并行执行意味着同时运行多个测试。
特色:
- 启用 同时进行测试 in 多种浏览器和环境。
- 节省时间 极大地。
- 利用 枢纽与节点 概念。枢纽充当 Selenium 向与其连接的每个节点发出命令。
Selenium 浏览器和环境支持
由于建筑风格不同, Selenium SDI, Selenium RC、WebDriver支持不同的浏览器和操作环境。
Selenium IDE | 网络驱动程序 | |
---|---|---|
浏览器支持 | Mozilla的 Firefox 和铬 |
Google Chrome 12+ Firefox Internet Explorer 7+ 和 Edge 苹果浏览器, HtmlUnit 和 PhantomUnit |
运行系统 | Windows、Mac OS X、Linux | 所有可运行上述浏览器的操作系统。 |
请注意: Opera 驱动程序不再工作
如何选择合适的 Selenium 满足您需求的工具
工具 | 为什么选择? |
---|---|
Selenium IDE |
|
Selenium RC |
|
网络驱动程序 |
|
Selenium 格 |
|
之间的比较 Selenium 和 QTP (现为 UFT)
快速测试专业版(QTP) 是该公司之前拥有的专有自动化测试工具 Mercury 互动 在惠普收购它之前 在2006。其后来的所有者是 MicroFocus,该工具更名为 UFT one。 Selenium Tool Suite 相比其他产品有很多优势 QTP 详情如下 -
优点和好处 Selenium 通过 QTP
Selenium | QTP |
---|---|
开源, 免费使用及 免费的。 | Commercial / 商业. |
高度可扩展性 | 有限的附加组件 |
可以跨平台运行测试 不同的浏览器 | 只能在以下位置运行测试 Firefox, 互联网浏览器 和 铬系列 |
支持 各种操作系统 | 只能用于 Windows |
支持 移动设备 | QTP 支持移动应用测试自动化(iOS 和 Android) 使用 HP 解决方案 - HP Mobile Center |
可以执行测试 而 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 浏览器最小化 | 需要让被测应用程序在桌面上可见 |
可以执行测试 并联. | 只能并行执行,但使用 Quality Center,它又是付费产品。 |
真实案例研究
🔍案例研究 1:SaaS 仪表板的跨浏览器兼容性
EventXtra XNUMX大解决方案
一家软件即服务公司正准备发布一款分析仪表盘,该仪表盘需要在现代浏览器(Chrome、 Firefox、Edge、Safari)。
挑战
在每个浏览器上进行手动测试非常耗时、容易出错,并且无法跟上快速的开发迭代。
解决方案与 Selenium
一位 QA 工程师创建了一个 Selenium 格 设置为在多个浏览器和操作系统组合上同时执行相同的测试套件。测试是在 Python 运用 Selenium WebDriver 用于登录、图表过滤和数据导出等操作。
成果
- 回归持续时间减少80%。
- 尽早发现特定于浏览器的渲染错误(例如,IE 中的图形未对齐)。
- 在整个浏览器矩阵中保持一致的仪表板用户体验,无需额外的手动循环。
⚙️ 案例研究 2:通过以下方式实现 Web 应用的 CI/CD 集成 Selenium + TestNG
EventXtra XNUMX大解决方案
一家中型 Web 开发公司依赖于使用 Jenkins 的 CI/CD 流水线。他们需要确保每次代码变更后核心用户体验都能正常运行。
挑战
新构建的部署偶尔会破坏用户流程(登录、表单提交),逃避检测,直到一天结束时进行手动测试。
解决方案与 Selenium
测试人员实施了 Java基于 Selenium WebDriver 套件集成 TestNG测试涵盖身份验证、配置文件更新和搜索功能。这些测试在每个 Jenkins 版本上运行,利用并行执行和浏览器参数化。
成果
- 实现快速失败反馈:中断的流程会被立即标记。
- 部署后错误减少了 60% 以上。
- 使开发人员能够在进入 QA 之前解决问题。
🚀 案例研究 3:加速旅行聚合器的功能发布
EventXtra XNUMX大解决方案
一家旅游聚合平台需要发布改进的航班预订功能。10多个页面的手动回归测试耗时数日,导致发布进度受阻。
挑战
缩短上市时间的压力不能超过手动测试周期,否则可能会造成延误或质量下降。
解决方案与 Selenium & 页面对象模型
QA 自动化主管在 C# 中引入了页面对象模型 (POM) 结构。 Selenium WebDriver 脚本封装了页面元素和操作(搜索航班、应用筛选条件、付款案例)。GitLab CI 每晚都会触发自动测试运行。
成果
- 测试时间从 3 天缩短至仅 4 小时。
- 跨多个功能重复使用脚本可将脚本编写工作量减少 50%。
- 信心增强:版本按时发布,错误报告极少。
QTP 的优势 Selenium
QTP | Selenium |
---|---|
可以测试 Web 和桌面应用程序 | 只能测试 Web 应用程序 |
附带一个 内置对象存储库 | 没有内置对象存储库 |
自动化速度快于 Selenium 因为它是一个功能齐全的 IDE。 | 由于没有原生IDE,因此自动化速度较慢,只能使用第三方IDE进行开发。 |
数据驱动测试更容易执行,因为 它具有内置的全局和本地数据表. | 数据驱动测试更加麻烦,因为你必须依赖编程语言的功能来设置测试数据的值 |
可以访问浏览器内的控件(如收藏夹栏、地址栏、后退和前进按钮等) | 无法访问被测 Web 应用程序之外的元素 |
提供专业 客户支持 | 没有提供官方用户支持。 |
具有天生的能力 导出测试数据 转换为外部格式 | 没有将运行时数据导出为外部格式的本机功能 |
建立参数化支持 | 参数化可以通过编程实现,但很难实现。 |
自动生成测试报告 | 不支持生成测试/错误报告的本机支持。 |
虽然很明显,QTP 具有更高级的功能, Selenium 在三个主要方面胜过 QTP:
- 成本(因为 Selenium 完全免费)
- 灵活性(因为它可以支持多种编程语言、浏览器和平台)
- 并行测试(QTP 可以做到这一点,但必须使用 Quality Center)
结语
- 整个 Selenium 软件测试套件由四个组件组成:
- Selenium 主意 Firefox 和 chrome 插件,您只能使用它来创建相对简单的测试用例和测试套件。
- Selenium 远程控制,也称为 Selenium 1、是第一个 Selenium 该工具允许用户使用编程语言创建复杂的测试。
- WebDriver 是一项较新的突破,它允许您的测试脚本直接与浏览器通信,从而从操作系统级别对其进行控制。
- Selenium 网格也是一种使用的工具 Selenium RC 跨不同的浏览器和操作系统执行并行测试。
- Selenium RC 与 WebDriver 合并形成 Selenium 2.
- Selenium 在成本和灵活性方面比Microfocus UFT One更具优势。