• Selenium Video Tutorials

Selenium WebDriver 与 RC 的区别



Selenium WebDriver 和 Selenium RC 之间存在许多差异。尽管这两个工具都帮助使用各种编程语言创建自动化测试,但它们在许多方面都不同。

Selenium WebDriver

Selenium WebDriver 是 Selenium Remote Control 的继任者,它直接向浏览器发送命令并检索结果。现在让我们讨论 Selenium WebDriver 的架构。

Selenium WebDriver 架构

Selenium Web Driver 架构的简化图如下所示:

Selenium Vs RC 1

从 Selenium 4 版本开始,整个架构与 W3C(万维网联盟)完全兼容,这意味着 Selenium 4 遵循 W3C 提供的所有标准和指南。我们可以在以下链接中获取有关 W3C 的更多信息:

https://tutorialspoint.com/world-wide-web-consortium-w3c.

Selenium WebDriver 架构非常简单。它不需要任何代理服务器,并且可以直接与浏览器通信。只需要一个 IDE 来开发测试代码,以及一个执行这些测试的浏览器。

Selenium WebDriver API 实现了浏览器和浏览器驱动程序之间的交互。此架构包含四个层,即 Selenium 客户端库、W3C 协议、浏览器驱动程序和浏览器。由于浏览器、浏览器驱动程序和 Selenium WebDriver 符合 W3C 协议,因此客户端库和浏览器驱动程序之间的交互更加高效、快速、可靠和稳定。

  • Selenium 客户端库包含 Java、Ruby、Python、C# 等语言。用任何语言编写的测试用例都用于发送命令以与浏览器进行交互。

  • 代码触发后,客户端会根据 W3C 协议将其转换为 Json 或其他类似的标准格式。

  • W3C 协议用于将信息从服务器传输到客户端的任务。浏览器驱动程序充当客户端和浏览器之间的桥梁。浏览器驱动程序具有实际在浏览器上执行的序列化请求。浏览器驱动程序与其各自的浏览器交互,并通过解释 Json 来执行命令。浏览器驱动程序一旦获得任何指令,就会在浏览器上运行它们。然后以 HTTP 响应的形式给出响应。

  • 浏览器驱动程序还会根据 W3C 协议以标准化格式序列化它收到的响应,并将其发送回客户端。然后客户端将对其收到的响应进行反序列化,以确认命令请求是否已成功执行。

让我们考虑以下代码块:

WebDriver driver = new ChromeDriver(); driver.get (“https://tutorialspoint.com/selenium/practice/selenium_automation_practice.php“);

一旦我们运行此代码块,整个代码将根据 W3C 协议通过 HTTP 作为 URL 转换为 JSON 或任何其他标准格式。转换后的 URL 将馈送到 ChromeDriver。

浏览器驱动程序利用 HTTP 服务器从 HTTP 获取请求。当浏览器驱动程序获取 URL 时,它通过 HTTP 将请求传递给其浏览器。它将触发在浏览器上执行 Selenium 指令的事件。

现在,如果请求是 POST 请求,它将在浏览器上触发一个操作。如果是 GET 请求,则响应将在浏览器端生成。最后它将通过 HTTP 传递给浏览器驱动程序。浏览器驱动程序将依次将其发送到 UI。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

Selenium Remote Control (RC)

Selenium Remote Control 是一个用 Java 实现的服务器。Selenium Remote Control (RC) 是允许执行比简单浏览器操作和线性执行更复杂操作的旗舰测试框架。它可以使用 HTTP 接受浏览器的命令。Selenium Remote Control 有一个 Selenium Remote Control 服务器和一个 Selenium Remote Control 客户端。在当前版本的 Selenium 中,Selenium RC 已过时,并且已被 Selenium 弃用。

Selenium Remote Control 架构

现在让我们讨论 Selenium Remote Control 的架构。Selenium Remote Control 架构的简化图如下所示:

Selenium Vs RC 2

Selenium Remote Control 架构并不简单。为了在 Selenium Remote Control 中触发测试,我们需要在我们的系统中安装和设置远程控制服务器。它类似于 Web 浏览器和命令之间的桥梁。Selenium Remote Control 服务器将 Selenium Core(一个 JavaScript 程序)放在浏览器中。在此之后,Selenium Core 根据测试以 JavaScript 命令的形式从 Selenium Remote Control 服务器获取消息。浏览器执行从 Selenium Core 收到的命令,并将测试响应发送回服务器。

因此,Selenium Remote Control 所构建的架构使得测试执行速度变慢,因为它基于 Selenium Core,后者是一种 JavaScript 语言。

这总结了 Selenium WebDriver 架构的整体解释。

Selenium WebDriver 和 Remote Control (RC) 之间的区别

Selenium Remote Control 和 Selenium Webdriver 之间的主要区别如下所示:

特性 Selenium Webdriver Selenium RC
架构 简单直接 复杂,包含客户端和服务器
服务器 不需要服务器即可启动测试执行 需要服务器才能启动测试执行
API 具有更强大的 API。 具有较弱的 API。
录制 不能用于录制目的 可以用于录制目的。
无头 支持使用 HTMLUnit 浏览器进行无头执行 不支持无头执行。
iPhone/Android 能够使用 Android 驱动程序和 iPhone 驱动程序测试移动设备 无法测试 iPhone/Android 移动设备
报告 默认情况下无法生成报告 默认情况下提供 html 格式的报告生成
性能 速度快,因为它直接与浏览器通信 速度不如 Selenium WebDriver 快,因为它不直接与浏览器通信。
OOP 完全基于 OOP 不完全基于 OOP
浏览器支持 在支持新浏览器方面不太稳定 在支持新浏览器方面稳定
用户交互 能够处理光标和鼠标操作 无法处理光标和鼠标操作
易用性 在开发测试方面更复杂 在开发测试方面不太复杂
广告