Skip to content

Selenium - 远程控制

Selenium Remote Control (RC),也称为 Selenium 1,在 Selenium WebDriver(Selenium 2、3 和 4)出现之前,多年来一直是 Selenium 的旗舰项目。

RC 的工作原理是将 JavaScript 代码 (Selenium Core) 注入到浏览器中。测试脚本(用 Java、C#、Python 等语言编写)与独立的 Selenium RC Server 通信。该服务器充当代理,将测试脚本中的命令转换为 JavaScript 指令,发送给浏览器,并返回结果。

RC 架构涉及一个中间服务器并依赖于 JavaScript 注入。这种方法存在一些局限性:

  • 执行速度较慢: 额外通过 RC 服务器的通信跳跃增加了延迟(latency)。
  • JavaScript 沙箱限制: Selenium Core 受浏览器 JavaScript 安全模型限制,使得某些交互难以实现或不稳定。
  • 不够真实的交互: 操作是通过 JavaScript 模拟的,而非原生的浏览器事件。
  • 复杂的设置: 需要运行独立的服务器进程。

Selenium WebDriver 的开发是为了克服 RC 的局限性。WebDriver 使用浏览器原生的自动化支持(通过每个浏览器的特定驱动程序可执行文件 - ChromeDriver、GeckoDriver 等)直接与浏览器通信。

  • 直接通信: 脚本和浏览器驱动程序之间无需中间服务器。
  • 执行速度更快: 减少延迟(latency),加快测试运行速度。
  • 原生事件: 更直接地与浏览器交互,带来更真实的用户模拟。
  • 改进的 API: 提供更现代、面向对象且一致的 API。
  • 更好地处理动态页面: 处理 AJAX 和动态内容有更健壮的机制(例如等待 Waits)。

Selenium RC 已被官方弃用,不再积极支持。所有新的 Selenium 自动化测试开发都应使用 Selenium WebDriver。

尽管您可能在遗留项目中遇到 RC,但了解其历史有助于理解 WebDriver 带来的进步,WebDriver 是当前的行业标准,也是本教程的重点。