Selenium 组件

使用 WebDriver 构建测试套件需要您理解并有效地使用多个组件。与软件中的所有事物一样,不同的人对同一个概念使用不同的术语。下面是此描述中如何使用术语的细分。

术语

  • API:应用程序编程接口。这是一组您用来操作 WebDriver 的“命令”。
  • 库:一个代码模块,其中包含 API 和实现它们所需的代码。库是特定于每个语言绑定的,例如 Java 的 .jar 文件、.NET 的 .dll 文件等。
  • 驱动程序:负责控制实际浏览器。大多数驱动程序由浏览器供应商自己创建。驱动程序通常是在系统上与浏览器本身一起运行的可执行模块,而不是执行测试套件的系统。(尽管这些可能是同一个系统。)注意:有些人将驱动程序称为代理。
  • 框架:一个额外的库,用作 WebDriver 套件的支持。这些框架可能是测试框架,例如 JUnit 或 NUnit。它们也可能是支持自然语言功能的框架,例如 Cucumber 或 Robotium。框架也可以编写并用于执行以下任务:操作或配置被测系统、数据创建、测试预言等。

组成部分

WebDriver 最低限度是通过驱动程序与浏览器通信。通信是双向的:WebDriver 通过驱动程序将命令传递给浏览器,并通过同一路径接收返回的信息。

Basic Communication

驱动程序特定于浏览器,例如 Google Chrome/Chromium 的 ChromeDriver、Mozilla Firefox 的 GeckoDriver 等。驱动程序在与浏览器相同的系统上运行。这可能是也可能不是执行测试本身的同一系统。

上面这个简单的例子是直接通信。与浏览器的通信也可以是通过 Selenium Server 或 RemoteWebDriver 进行的远程通信。RemoteWebDriver 在与驱动程序和浏览器相同的系统上运行。

Remote Communication

远程通信也可以使用 Selenium Server 或 Selenium Grid 进行,这两者反过来又与主机系统上的驱动程序通信。

Remote Communication with Grid

框架的适用范围

WebDriver 只有一个任务:通过上述任何方法与浏览器通信。WebDriver 对测试一无所知:它不知道如何比较事物、断言通过或失败,并且它当然对报告或 Given/When/Then 语法一无所知。

这就是各种框架发挥作用的地方。至少,您需要一个与语言绑定匹配的测试框架,例如,.NET 的 NUnit、Java 的 JUnit、Ruby 的 RSpec 等。

测试框架负责运行和执行测试中的 WebDriver 和相关步骤。因此,您可以认为它看起来类似于下图。

Test Framework

自然语言框架/工具(如 Cucumber)可以作为上图中测试框架框的一部分存在,或者它们可以将其自定义实现中的整个测试框架包装起来。

上次修改时间 2022 年 9 月 4 日:概述拼写、标点符号修复 (#1156) (6b87463b637)