什么是 Selenium? 入门教程

⚡ 智能摘要

Selenium 是一个免费的开源自动化测试框架,旨在利用多种编程语言,跨浏览器和平台验证 Web 应用程序。它为现代质量保证实践提供了强大、高效且可扩展的自动化测试方案。

  • 关键原则: Selenium 可自动验证各种浏览器和操作系统上的 Web 应用程序,支持以下语言: Java,C#, Python等等。
  • 工具套件结构: Selenium 它包含四个主要组件——IDE、远程控制、WebDriver 和 Grid——每个组件都针对不同的自动化需求。
  • 集成开发环境和原型设计: Selenium IDE 是一款浏览器扩展程序,用于快速创建用例和原型,但最适合简单的测试场景。
  • 遥控器的演变: Selenium RC 目前处于维护模式,它是第一个允许使用多种语言编写测试脚本的框架,解决了浏览器策略限制。
  • WebDriver实现: WebDriver 直接与浏览器通信,为复杂的自动化提供操作系统级别的控制和卓越的稳定性。
  • 并行网格: Selenium 网格技术能够跨多台机器和浏览器并行执行测试,从而大幅缩短测试周期。
  • 跨浏览器和平台支持: Selenium 支持多种浏览器和操作系统,为 Web 质量保证提供无与伦比的灵活性。
  • 现实世界的影响: 团队使用 Selenium 加速发布周期,减少手动测试,并确保跨浏览器的用户体验一致,在 SaaS、CI/CD 和功能交付方面已取得显著成果。

什么是硒

什么是 Selenium?

Selenium 是一个免费的(开源)自动化测试框架,用于验证跨不同浏览器和平台的 Web 应用程序。您可以使用多种编程语言,例如 Java,C#, Python等来创建 Selenium 测试脚本。使用 Selenium 测试工具通常被称为 Selenium 测试与验证.

专家见解

避免在测试中使用固定的睡眠延迟。相反,使用显式等待(例如 WebDriverWait)来等待元素加载。这使得你的脚本更可靠、更快速,因为它们会根据实际页面情况动态响应——这是世界各地学生的一项关键最佳实践,从 Selenium设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“

— Himanshu Sheth, Selenium 专家

👉 免费报名参加直播 Selenium 测试项目

Selenium 工具套件

Selenium 软件不仅仅是一个工具,而是一套软件,每件软件都适用于不同的 Selenium 组织对 QA 测试的需求。以下是工具列表

  • Selenium 集成开发环境 (IDE)
  • Selenium 遥控器 (RC)
  • 网络驱动程序
  • Selenium 格

Selenium 工具套件

此刻, Selenium RC 和 WebDriver 合并为一个框架,形成 Selenium 2. Selenium 1,顺便说一下,指的是 Selenium RC。

视频教程 Selenium

点击 开始 如果视频无法访问

谁开发的 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 由于 同源政策所以,另一位 ThoughtWorks 的工程师, 保罗·哈曼特决定创建一个服务器,充当HTTP代理,以“欺骗”浏览器,使其相信…… Selenium 核心和被测试的 Web 应用程序来自同一个域。该系统被称为 Selenium 远程控制 or Selenium 1.

诞生 Selenium 格

帕特里克·莱特博迪

Selenium Grid 是由 帕特里克·莱特博迪 为了尽可能缩短测试执行时间。他最初将该系统称为 “托管式质量保证。” 它能够在关键阶段捕获浏览器屏幕截图,而且…… 发送中 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 互动 (是的,就是被惠普收购前最初开发QTP的那家公司)。 Selenium 是众所周知的解毒剂 Mercury 中毒,Jason 建议使用这个名字,他的队友也使用了。这就是我们一直沿用到现在的框架。

为什么叫这个名字 Selenium

什么是 Selenium IDE?

Selenium 集成开发环境 (IDE) 是 最简单的框架 ,在 Selenium 套房和 最容易学的。 这是一个 Chrome和 Firefox 插入 你可以像安装其他插件一样轻松地安装它。但是,由于它的简单性, Selenium IDE 只能用作 原型制作工具。如果你想创建更高级的测试用例,你需要使用 Selenium RC 或 WebDriver。

Selenium IDE

什么是 Selenium 遥控 (Selenium RC 是什么?

Selenium RC 是 旗舰测试框架 整体上 Selenium 该项目已经进行了很长时间。这是第一个自动化 网络测试 工具 允许用户使用他们喜欢的编程语言从2.25.0版本开始,RC可以支持以下编程语言:

Selenium 遥控 (Selenium 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多种大口径枪械:
  • Selenese 命令,例如 type、open、clickAndWait、assert、verify 等。
  • 定位器,例如 id、name、xpath、css 选择器等。
  • 执行定制 Java使用 runScript 编写脚本代码
  • 以多种格式导出测试用例。
  • 在编程知识很少或没有编程知识的情况下创建测试。
  • 创建简单的测试用例和测试套件,稍后可以将其导出到 RC 或 WebDriver。
  • 测试 Web 应用程序 Firefox 并且仅限 Chrome。
Selenium RC
  • 使用比 Selenese 更具表现力的语言设计测试
  • 在不同的操作系统上针对不同的浏览器(HtmlUnit 除外)运行测试。
  • 使用以下方法跨多个环境部署测试 Selenium 格。
  • 针对支持以下功能的新浏览器测试您的应用程序 Java脚本。
  • 测试基于 AJAX 的复杂场景的 Web 应用程序。
网络驱动程序
  • 使用某种编程语言设计测试用例。
  • 测试具有丰富基于 AJAX 功能的应用程序。
  • 在 HtmlUnit 浏览器上执行测试。
  • 创建定制的测试结果。
Selenium 格
  • 运行你的 Selenium RC 脚本可在多个浏览器和操作系统中同时运行。
  • 运行一套庞大的测试套件,需要在最短的时间内完成。

真实案例研究

🔍案例研究 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%。
  • 信心增强:版本按时发布,错误报告极少。

相当常见 Selenium 挑战(和解决方案)

即使 Selenium 虽然功能强大,但测试人员经常会遇到一些影响可靠性和速度的挑战。以下是一些常见问题及其解决方法:

  1. 不稳定的测试:
    由于时序或网络问题,测试可能会随机失败。
    修复: 使用显式等待和稳定的定位器;避免 Thread.sleep().
  2. 动态网页元素:
    更改元素 ID 或 XPath 会导致找不到元素的错误。
    修复: 使用相对 XPath、CSS 选择器或动态属性处理。
  3. Sync加冕问题:
    元素加载速度比脚本执行速度慢。
    修复: 实现符合预期条件的 WebDriverWait。
  4. 跨浏览器不一致:
    在Chrome浏览器上测试结果有所不同。 Firefox或 Edge。
    修复: 对……进行测试 Selenium 用于跨浏览器验证的网格或云平台。
  5. 处理弹出窗口和警告:
    意外弹出窗口会中断测试流程。
    修复: 绝大部分储备使用 Selenium使用 Alert 接口或 try-catch 块优雅地处理它们。
  6. 测试维护成本:
    频繁的用户界面更改会使测试变得脆弱。
    修复: 采用页面对象模型(POM)和版本控制,以便于更新。
  7. 集成挑战:
    CI/CD 流水线可能因驱动程序问题而失败。
    修复: 绝大部分储备使用 Selenium 经理 (Selenium 4+) 或 WebDriver Manager 来自动管理驱动程序。

简而言之: 桥梁 Selenium 问题源于同步不良或定位器脆弱——这两个问题都可以通过更智能的等待、模块化设计和持续维护来解决。

常见问题:

Selenium 是一个开源自动化框架,用于跨不同浏览器和平台测试 Web 应用程序。它允许测试人员使用各种编程语言模拟用户交互,例如点击、表单提交和导航。

Selenium 主要用于自动化基于浏览器的测试。它有助于确保 Web 应用程序在不同浏览器上正常运行,支持回归测试和功能测试,并且可以轻松集成到 CI/CD 管道中以实现持续测试。

Selenium 由四个主要部分组成: Selenium IDE (录制/播放工具) Selenium RC (已弃用), Selenium 网络驱动程序 (现代自动化 API),以及 Selenium 格 (用于并行、跨浏览器测试执行)。

四种类型是: Selenium IDE 用于记录测试, Selenium RC 对于传统自动化系统, Selenium 网络驱动程序 用于直接浏览器控制,以及 Selenium 格 用于跨多个浏览器的分布式并行测试。

Selenium WebDriver 是直接使用原生 API 与浏览器交互的核心组件。它使开发人员能够使用诸如 Python 等语言编写健壮的、跨浏览器的自动化脚本。 Java, Python以及 C#,无需依赖 Java脚本。

Selenium IDE 对新手友好,可通过浏览器扩展程序提供录制和播放功能。 网络驱动程序另一方面,它是基于代码的,支持多种语言,并提供先进的、可扩展的浏览器自动化功能,适用于现实世界的测试框架。

总结一下这篇文章: