关于 Selenium Webdriver 你所不知道的一切
已发表: 2022-11-02自动化测试人员使用 Selenium Webdriver 通过接受命令并将它们发送到 Web 浏览器来测试系统中的几率。
在现代世界中,正在部署数百个移动和 Web 应用程序。 QA 团队必须始终确保 Web 应用程序在开发区之外正常运行。 早些时候,这些任务是手动执行的。
输入硒。 它改变了执行测试的方式。
现在,自动化已经在各个行业广为人知,因为它节省了时间和成本,并为企业提供了很多优势。
Selenium 是对 Web 应用程序开发领域的各种组织有用的最佳自动化测试工具之一。 它确实是一个有用且强大的工具,提供了很多好东西。
想要对应用程序功能充满信心而又不想花费大量时间测试 Web 应用程序前端的开发人员可以将 Selenium 用于他们的目的。 此外,Selenium 通过自动化您的重复性任务来节省您的时间。
在本文中,我将讨论 Selenium、Selenium Webdriver、它的组件、支持的语言、一些关键特性和实际用例。
让我们开始!
什么是硒?
Selenium 是 Web 应用程序的自动化工具。 它是一个开源可移植框架,各种组织和开发人员使用它来自动化他们的关键任务。 在测试回归和功能测试用例时,Selenium 非常灵活。

Selenium 支持跨各种平台、编程语言和浏览器的自动化。 它的测试脚本是用 Python、C#、Java 等各种编程语言编写的。 这些脚本在不同的浏览器上运行,如 Safari、Firefox、Chrome、Opera 等,支持 macOS、Linux、Windows、Solaris 等平台。
Selenium 支持跨浏览功能,并有助于创建基于浏览器的强大的回归自动化套件。
它最初是由 Jason Huggins 在 2004 年开发的,当时他是一名需要定期测试的 Web 应用程序的工程师。 于是,他通过 JavaScript 创建了一个程序,意识到了手动测试的缺点。
起初,他将程序命名为“JavaScriptTestRunner”。 在意识到该程序的潜力后,Jason Huggins 将其变成了一个开源平台,并将其更名为 Selenium Core。
硒如何有用?
开发人员和组织在测试 Web 应用程序时使用 Selenium,因为 Selenium 使开发人员能够执行自动化测试。

事实上,一个软件具有复杂的架构,也容易出现回归问题。 从添加新功能到修复缺陷,与此相关的每个功能都可能导致现有功能停止工作。 这是自动化测试是编程世界中最有用的步骤的主要原因。
由于在对功能进行微小更改后手动测试应用程序是不切实际的,因此 Selenium 为您提供了一个更好的解决方案来减少此类繁重的任务。 它允许组织和开发人员模拟跨各种浏览器与 Web 应用程序的每次交互的测试。
硒工具套件

Selenium 包含大量工具或组件。 让我们逐一讨论。
#1。 硒 IDE
您可以使用名为 Selenium IDE 的记录和回放自动化组件来自动化您的 Web 应用程序的测试。 它以 Firefox 和 Chrome 浏览器扩展的形式出现。 编程经验低且有限的人可以使用此工具,因为它适用于录制和播放原理。
#2。 硒 RC

Selenium RC 用于在任何浏览器中插入 JavaScript 代码以实现自动化。 它还需要额外的服务器来运行这些自动化脚本。 但是它有一些限制,比如速度慢,没有像 HtmlUnitDriver 这样的无头浏览器,并且需要在执行任何测试脚本之前启动服务器。
#3。 Selenium 网络驱动程序
Selenium Webdriver 是 Selenium 最重要的组件之一。 它为多种浏览器提供各种驱动程序并支持不同的编程语言。
此外,它是面向对象的,支持几乎所有的浏览器,如 Firefox、Chrome、IE、Safari 等。 可以使用流行的语言编写脚本,包括 Python、Ruby、Java 等。
#4。 硒网格
Selenium 网格再次成为 Selenium 的重要组成部分。 它有助于在不同的远程机器上并行分布自动化测试的运行。 网格由一个集线器和各种节点组成。
这些节点运行 Selenium 套件的实例,您可以在这些实例上执行测试用例。 中央集线器充当服务器,节点连接到它以控制整个测试执行。
Selenium WebDriver 详解

一般来说,WebDriver 是一组应用程序编程接口 (API),是一种面向对象的工具,具有很多功能。 它提供浏览器和语言之间的通信设施。
WebDriver 用于在多个流行的浏览器中执行各种测试。 此外,它包含不同类型的抽象方法,如findElement()
、 By()
、 get()
等。
2009 年,Selenium RC 与 WebDriver 合并,创建了一个新的 Selenium 工具,称为 Selenium WebDriver 或 Selenium 2.0。
现在, Selenium Webdriver是 Selenium 的一个流行工具。 它为开发人员提供开源和免费库,以自动化 Web 应用程序的测试。
在 Selenium WebDriver 中,测试脚本是使用各种支持的编程语言开发的。 它可以在最现代的网络浏览器中运行。 此外,它支持不同的语言,如 Perl、Python、Ruby、Java、PHP 和 C#。

但目前,Selenium WebDriver 最流行的是 C# 和 Java。 它比 Selenium RC 执行得快得多,因为它直接调用浏览器。 此外,WebDriver 包含 Firefox 驱动程序或 Gecko 驱动程序的内置实现。
要在其他浏览器中执行测试,您需要插入特定于浏览器的驱动程序,以便进行通信和运行自动化测试。 最常用的 WebDriver 是:
- 谷歌浏览器驱动
- 歌剧司机
- Internet Explorer 驱动程序
- HTML 单元驱动程序 – 无头驱动程序
- Safari 驱动程序
Selenium WebDriver 因其在 Web 自动化方面的稳定性和多样性而闻名。 超过 80% 的公司正在使用 Selenium WebDriver,因为它是 UI 自动化的最简单方法。
Selenium WebDriver 的组件

Selenium WebDriver 由四个基本组件组成:
- Selenium 语言绑定
- JSON 有线协议
- 浏览器驱动程序
- 真正的浏览器
让我们详细讨论一下 Selenium WebDriver 的核心组件。
#1。 Selenium 语言绑定/核心库/Selenium 客户端
自动化脚本通过 Webdriver 与 Selenium 服务器交互。 它是用不同的编程语言编写的,例如 Ruby、Python、Java 等。
Selenium 开发人员开发语言绑定,让 Selenium 支持这些编程语言。 它的客户端库只是不同的 Jar 文件。 这些库具有 Selenium WebDriver 的方法和类,它们是创建自动化测试脚本所必需的。

您可以使用适用于各种语言的软件包安装程序来安装 Selenium 核心库。 例如,如果您希望在 Java 中使用浏览器驱动程序,您将需要 Java 客户端库或 Jar 文件。
Selenium 客户端库不是测试框架,而是提供了一个 API,这意味着一组从程序执行 Selenium 命令的函数。
#2。 基于 HTTP 的 JSON 有线协议
JavaScript Object Notation (JSON) 是一种流行的数据交换格式,它基于 JavaScript 的子集。 JSON 用于在 Web 上的服务器和客户端之间交换数据。
JSON Wire Protocol 支持所有流行语言中可用的所有数据格式,例如 Python、Ruby、Java 等。它是一种使用 JSON 在 Web 上的客户端和服务器之间传输数据的传输机制。
此外,JSON 使用 REST API 在 HTTP 服务器之间传输数据,每个浏览器驱动程序都有自己的 HTTP 服务器。
#3。 浏览器驱动程序

Selenium 为每个浏览器使用特定的驱动程序来建立安全通信,而不会泄露浏览器功能的任何内部逻辑。 这些驱动程序接收来自 Selenium 语言绑定的请求,并在浏览器上调用所需的操作。
Selenium 支持几乎所有现代浏览器的自动化。 浏览器驱动程序扩展了另一个名为 RemoteWebDriver 的类,该类实现了 WebDriver 接口。
#4。 真实无头浏览器
浏览器基本上是人们用来查看或搜索网络内容的软件程序。 Selenium WebDriver 支持真实和无头浏览器。
示例:假设您希望使用 Selenium WebDriver 自动化测试并在任何真实浏览器(如 Chrome)中执行脚本。 为此,您需要下载特定的驱动程序应用程序。 HTMLUnit 浏览器 (HTMLUnitDriver) 是无头浏览器的一个示例。
Selenium WebDriver 是如何工作的?
在实时场景中,当使用受支持的 Selenium 客户端库中的任何人编写脚本代码时,通过单击正确的选项,您可以执行程序的源代码。 单击运行选项后,浏览器将启动并导航到网站的 URL。

当您使用 WebDriver 执行测试脚本时,会在内部执行一些步骤。
- 单击按钮运行时,客户端库会运行程序中的命令并将其转换为 JSON 格式。 您将通过 HTTP 上的 JSON Wire Protocol 找到序列化的 JSON 格式,以将每个命令发送到浏览器驱动程序。 然后,每个浏览器驱动程序都使用 HTTP 服务器来接收 HTTP 请求。
- JSON Wire Protocol 通过传输数据在服务器和客户端之间进行通信。 HTTP 服务器在真实浏览器上执行所有必要的操作。 浏览器将发送加载 URL 的请求。
- 执行完所有动作后,需要通过 HTTP 将执行状态发送回 HTTP 服务器。 浏览器驱动程序再次使用 HTTP 服务器接收请求并通过 JSON Wire Protocol 将其发送回库。 然后将客户端库传递回程序。 然后程序将报告失败或成功。
Selenium WebDriver 的特点

Selenium WebDriver 的强大功能是:
- 多浏览器支持: Selenium WebDriver 支持广泛的网络浏览器及其版本,如 Chrome、Firefox、Safari、Opera、Internet Explorer 等。它还支持无头浏览器,如 HTMLUnit 浏览器。
- 多种语言支持: Selenium WebDriver 支持最常用的编程语言,如 Ruby、PHP、JavaScript、Pearl、Python、C# 等。它将提供根据能力选择任何一种语言的便利。 您可以轻松地开始创建测试脚本。
- 速度: Selenium WebDriver 执行快速操作。 它不需要中间服务器与浏览器进行通信。 此外,它还提供 Web 浏览器和 WebDriver 客户端库之间的直接通信。
- 简单易行的命令: WebDriver 提供了简单易行的命令以在测试脚本中实现。 例如,如果您希望使用 WebDriver 启动浏览器,则需要使用 new FirefoxDriver()、new ChromeFrover() 等命令。
- 驱动程序、方法和类: WebDriver 提供了各种解决方案来处理自动化测试中的潜在变化。 此外,它使用动态查找器帮助测试人员处理复杂的 Web 元素,例如下拉菜单、警报、复选框等。
- 简单的 API 命令:WebDriver 是面向对象且紧凑的,因此可以使用封装和抽象来隐藏不寻常的细节。 这使得 Selenium WebDriver 变得简单。
- 易于安装和配置: Selenium WebDriver 提供了一个选项来测试使用 JavaScript 或 AJAX 构建的异步 Web 应用程序。
Selenium WebDriver 的优点

Selenium WebDriver 的一些优点包括:
- Selenium WebDriver 是一个健壮的、免费的、开源的和可移植的工具。
- 它支持各种操作系统,如 Windows、Linux 和 Mac。 它还支持第三方工具,包括 Apache POI、Autoit 等。
- 它支持并行测试执行过程,这也是 Selenium WebDriver 流行的原因之一。 这将减少执行测试用例的时间。
- 它支持监听器和动态查找器的实现。
- 在 Selenium WebDriver 中,不需要在每次执行脚本之前启动服务器。
- 您可以将其与任何第三方工具(例如 JUnit 和 TestNG)集成,以对不同的测试用例进行分组并生成测试报告。
- 通过与 Jenkins、Docker 和 Maven 集成来获得持续测试。
Selenium WebDriver 的限制
除了优点之外,Selenium WebDriver 也有一些限制。
- Selenium WebDriver 只能测试基于 Web 的应用程序。 无法使用 Selenium 测试桌面应用程序和基于窗口的应用程序。
- 不可能对图像进行测试。
- WebDriver 不会自动生成测试结果文件。 您需要将其与 JUnit 或 TestNG 等框架集成或生成报告。
- 它不支持新的浏览器。
- 没有加载项帮助。
- 条码阅读器、reCAPTCHA 和 CAPTCHA 无法通过使用 WebDriver 实现自动化。
Selenium WebDriver 的用例

Selenium WebDriver 在处理 Web 应用程序的不同行业中有许多用途。 一些用途如下:
- 更新 WebDrivers 版本以匹配 Web 浏览器的最新版本和 Selenium 库
- 许多企业通过实施自动化框架来解决同步问题
- 将测试数据存储到 JSON 中
- 使用页面对象模型设计模式对被测 Web 应用程序的用户界面进行建模
- 使用面向对象编程 (OOP) 语言测试自动化开发
- 通过自动截屏来调查故障
- 从测试自动化中消除不确定性
- 创建高质量的测试结果
结论
Selenium WebDriver 是 Selenium 套件的关键组件。 它就像 Selenium 的大脑。 Selenium WebDriver 中的 API 有助于测试过程的快速运行。 Selenium WebDriver 的主要功能是跨浏览器测试、网页自动化、现代技术支持等。
Selenium WebDriver 中的浏览器驱动程序有助于通过各种 Web 浏览器与套件进行交互。 因此,Selenium WebDriver 对于整个 Selenium 自动化测试框架非常重要。