什么是 Selenium WebDriver?

⚡ 智能摘要

Selenium WebDriver 是一个开源自动化框架,它通过原生 API 直接控制真实浏览器,从而能够使用诸如 tv 等语言对 Web 应用程序进行快速、可靠且跨浏览器的测试。 Java, PythonC# 和 Ruby。

  • 核心原则: WebDriver 在操作系统层面与浏览器通信,从而实现更快、更准确的测试执行。 Selenium RC。
  • Archi结构洞察: W3C 标准的 JSON Wire 协议允许语言绑定、驱动程序和浏览器无缝交互。
  • 实施重点: 选择任何支持的语言——Java, Python、C#、Ruby、 Java脚本——编写可重用、条件式和 loo 的脚本ping 测试流程。
  • 优化提示: 使用 HtmlUnitDriver 或无头 Chrome 来加速持续集成管道中的执行。
  • 现实世界的影响: WebDriver 模拟实际用户行为,准确验证禁用字段、隐藏元素和动态 UI 状态。

Selenium WebDriver 和支持的浏览器

什么是 Selenium WebDriver?

Selenium 网络驱动程序 是一个开源的 API 集合,用于自动化测试 Web 应用程序。它可以验证 Web 应用程序在包括 Chrome 在内的多种浏览器上是否按预期运行。 Firefox, 苹果浏览器, Microsoft EdgeWebDriver 还支持在不同操作系统上进行跨浏览器测试,包括 Internet Explorer 和 Windows 浏览器。

Selenium WebDriver 和支持的浏览器

不比 Selenium IDE WebDriver 允许您使用真正的编程语言来设计测试脚本,因此您可以应用条件逻辑,例如 if-then-else 和 switch-case,以及其他功能。ping WebDriver 支持类似 for 和 do-while 这样的循环结构。它支持以下语言:

  • Java
  • .NET (C#)
  • PHP
  • Python
  • Perl的
  • 红宝石
  • Java脚本(通过 WebDriverJS / WebDriverIO)

你不需要全部学习——精通其中一种就足够了。本教程中的示例使用 Java 与 Eclipse IDE。

Archi结构 Selenium 网络驱动程序

Selenium WebDriver 遵循客户端-服务器架构,直接从操作系统层面控制浏览器。要运行任何脚本,您只需要您首选的编程语言集成开发环境(IDE)(其中包含 WebDriver)。 Selenium 命令)和目标浏览器。

简化架构 Selenium 网络驱动程序

该框架由四个关键组成部分构成: Selenium 客户端库(语言绑定)、基于 HTTP 的 JSON Wire 协议、浏览器驱动程序(例如 ChromeDriver 和 GeckoDriver)以及浏览器本身,这些组件通过标准化的 HTTP 请求进行通信,这正是 WebDriver 具备下文所述的速度和准确性优势的原因所在。

速度

WebDriver 执行速度

WebDriver 比 Selenium RC 是因为它直接与浏览器通信,并使用浏览器的原生引擎进行控制。没有中间层。 Java脚本代理服务器,消除了一个主要的性能瓶颈。

真实互动

与浏览器元素进行实际交互

WebDriver 与页面元素的交互方式与真实用户完全相同。例如,如果被测页面上有一个禁用的文本框,WebDriver 就无法在其中输入内容——因为真实用户也无法做到。这种高度逼真的模拟方式可以减少测试结果中的误报。

API

Selenium WebDriver 简单 API

WebDriver 公开了一个简洁明了的 API,其中不包含冗余或令人困惑的命令,使测试脚本更容易阅读和维护。

浏览器支持

HtmlUnit 无头浏览器支持

WebDriver 还支持无头 HtmlUnit 浏览器。由于 HtmlUnit 没有图形界面,因此被称为“无头”浏览器,它在后台隐蔽运行。这使得它执行测试的速度极快,因为无需渲染时间,非常适合无法使用图形用户界面的 CI/CD 流水线。

创新中心 Selenium WebDriver 工作原理逐步指南

考虑到架构,以下是典型的 WebDriver 测试的执行方式:

  1. 编写测试脚本 使用您选择的语言 Selenium 客户端库。
  2. 序列化命令—绑定转换每个 Selenium 调用 JSON Wire Protocol 请求。
  3. 发送到浏览器驱动程序—请求到达本地驱动程序(ChromeDriver、GeckoDriver、EdgeDriver),该驱动程序监听本地端口。
  4. 驱动程序指示浏览器 使用其原生自动化 API 来点击、输入或读取元素。
  5. 浏览器执行并响应并将结果以 JSON 有效负载的形式返回。
  6. 断言并报告——例如这样的框架 TestNG, JUnit或者,PyTest 会验证响应并记录通过或失败。

同一个脚本既可以在本地运行,也可以在 Docker 容器内运行,或者在远程网格上运行,例如 Selenium 网格未经修改。

Selenium WebDriver 与 Selenium IDE 与 Selenium RC

正确的 Selenium 工具的选择取决于测试目标。下表对这三种工具进行了比较:

特性 Selenium IDE Selenium RC Selenium 网络驱动程序
类型 浏览器插件 Java脚本代理服务器 原生 API 自动化
速度 快速播放 放慢 最快
语言 没有
无头浏览器 没有 没有
状态 有限 已过时 W3C 标准

对于现代项目,WebDriver 是推荐的选择——它符合 W3C 标准,积极维护,并且在语言和浏览器支持方面最为广泛。

WebDriver 的局限性

WebDriver虽然功能强大,但也并非完美无缺。了解它的局限性有助于您制定切实可行的自动化策略。

WebDriver 无法立即支持全新浏览器

由于 WebDriver 在操作系统层面运行,而不同的浏览器与操作系统通信的方式各不相同,因此每个新版本的浏览器都可能需要更新驱动程序。WebDriver 团队需要时间来研究新浏览器的运行机制,才能发布兼容的驱动程序。在此之前,某些命令在新浏览器上的行为可能不一致,甚至完全失败。

无内置测试报告功能

WebDriver 本身不会生成测试结果报告。您必须将其与单元测试框架集成(TestNG, JUnit(例如 NUnit、PyTest)或报告库(例如 Allure、ExtentReports)来捕获通过/失败摘要和屏幕截图。

常见问题

Selenium WebDriver 正式支持 Java,C#, Python, 红宝石, Java脚本语言(Node.js)和 Kotlin。PHP 和 Perl 也有社区提供的绑定。大多数团队选择使用 Node.js 和 Kotlin。PHP 和 Perl 也有社区绑定。大多数团队选择使用 Node.js 或 Kotlin ...PHP 和 Perl 也有社区绑定。大多数团队选择使用 Node.js 或 Kotlin。 Java or Python 因为拥有成熟的生态系统和广泛的社区支持。

是的。 Selenium WebDriver 采用 Apache License 2.0 许可发布,允许免费用于个人和商业用途。无需支付任何许可费用,您可以修改或重新分发源代码,但必须保留原始版权声明。

WebDriver 本身面向的是 Web 浏览器,而不是原生移动应用。对于移动自动化,请使用 Appium它扩展了 WebDriver 协议,以控制原生、混合和移动 Web 应用程序。 Android iOS 也使用了相同的 API。

AI 工具通过自愈定位器、从屏幕截图生成选择器、预测不稳定的测试以及推荐覆盖率差距等方式增强 WebDriver 的功能。诸如此类的平台 TestimMabl 和 Functionize 在标准 WebDriver 协议之上实现了机器学习层。

是的。诸如 ChatGPT、Copilot 等生成式人工智能助手, CodeWhisperer 可以根据纯文本需求或录制的用户流程生成 WebDriver 脚本。工程师在合并代码之前仍然需要审查其准确性、安全性和可维护性,尤其是在 AI 生成的代码尝试执行某些操作时。 在下拉菜单中选择 Selenium 网络驱动程序 形式。

总结一下这篇文章: