什么是 Selenium? 入门教程

什么是 Selenium?
Selenium 是一个免费的(开源)自动化测试框架,用于验证跨不同浏览器和平台的 Web 应用程序。您可以使用多种编程语言,例如 Java,C#, Python等来创建 Selenium 测试脚本。使用 Selenium 测试工具通常被称为 Selenium 测试与验证.
专家见解
避免在测试中使用固定的睡眠延迟。相反,使用显式等待(例如 WebDriverWait)来等待元素加载。这使得你的脚本更可靠、更快速,因为它们会根据实际页面情况动态响应——这是世界各地学生的一项关键最佳实践,从 Selenium设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“
👉 免费报名参加直播 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)
.png)
不幸的是,使用测试人员 Selenium 由于 同源政策所以,另一位 ThoughtWorks 的工程师, 保罗·哈曼特决定创建一个服务器,充当HTTP代理,以“欺骗”浏览器,使其相信…… Selenium 核心和被测试的 Web 应用程序来自同一个域。该系统被称为 Selenium 远程控制 or Selenium 1.
诞生 Selenium 格
.jpg)
Selenium Grid 是由 帕特里克·莱特博迪 为了尽可能缩短测试执行时间。他最初将该系统称为 “托管式质量保证。” 它能够在关键阶段捕获浏览器屏幕截图,而且…… 发送中 Selenium 同时向不同的机器发出命令。
诞生 Selenium IDE
.jpg)
笠谷慎也 日本创造 Selenium IDE,以 Firefox 以及一个可以通过录制和回放功能实现浏览器自动化的 Chrome 扩展程序。他提出这个想法是为了进一步提高创建测试用例的速度。他捐赠了 Selenium IDE 到 Selenium 项目 2006.
WebDriver 的诞生
.jpg)
西蒙斯图尔特 创建 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 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 格 |
|
真实案例研究
🔍案例研究 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 虽然功能强大,但测试人员经常会遇到一些影响可靠性和速度的挑战。以下是一些常见问题及其解决方法:
- 不稳定的测试:
由于时序或网络问题,测试可能会随机失败。
修复: 使用显式等待和稳定的定位器;避免Thread.sleep(). - 动态网页元素:
更改元素 ID 或 XPath 会导致找不到元素的错误。
修复: 使用相对 XPath、CSS 选择器或动态属性处理。 - Sync加冕问题:
元素加载速度比脚本执行速度慢。
修复: 实现符合预期条件的 WebDriverWait。 - 跨浏览器不一致:
在Chrome浏览器上测试结果有所不同。 Firefox或 Edge。
修复: 对……进行测试 Selenium 用于跨浏览器验证的网格或云平台。 - 处理弹出窗口和警告:
意外弹出窗口会中断测试流程。
修复: 绝大部分储备使用 Selenium使用 Alert 接口或 try-catch 块优雅地处理它们。 - 测试维护成本:
频繁的用户界面更改会使测试变得脆弱。
修复: 采用页面对象模型(POM)和版本控制,以便于更新。 - 集成挑战:
CI/CD 流水线可能因驱动程序问题而失败。
修复: 绝大部分储备使用 Selenium 经理 (Selenium 4+) 或 WebDriver Manager 来自动管理驱动程序。
简而言之: 桥梁 Selenium 问题源于同步不良或定位器脆弱——这两个问题都可以通过更智能的等待、模块化设计和持续维护来解决。







