# 9A WebDriver – 架构及其工作方式

> 原文： [https://javabeginnerstutorial.com/selenium/9a-webdriver-architecture/](https://javabeginnerstutorial.com/selenium/9a-webdriver-architecture/)

学习 WebDriver 的方法很有趣，而且常常使人弯腰，所以请做好准备……在*南方惊喜*的土地上跋涉，我们将遇到一些奇妙，荒唐和古怪的事物。

您将发现 Selenium WebDriver 为什么将使您的生活变得如此好-从质量保证的角度来看，以及为什么我们将其称为“统治冠军”！ 为了掌握该工具并构建测试自动化框架，对我们正在处理的内容进行更深入的了解非常重要。 那么，我们还等什么呢？ 现在让我们开始打好基础！

哪种方式比图形表示更容易理解？ 这就是我们的大脑喜欢记住事物的方式，这也是我们将要前进的方式。

![WebDriver Architecture](img/a771b70e8626ad97f91b67946b0c8f69.png)

从这张图片中我们可以看出，这个架构有 3 层，

1.  绑定
2.  WebDriver API 和
3.  驱动

让我们一次讨论这一步骤。 （*大字警报！*）**绑定** – 根据维基百科，这意味着将一件事映射到另一件事。 只要记住这两个词，*粘合代码*即可。

有很多高级编程语言，您可能想使用 C# ，但其他人可能更喜欢 Python。 每个人都希望利用通用的 WebDriver API 来以自己舒适的语言自动化浏览器。 这是语言级别绑定进入图片的地方。 这些就像用相应语言编写的*粘合代码/包装库*与 WebDriver API 进行通信。 除了 Java，C# ，Ruby，Python 绑定外，还有更多。 也很容易添加新的。

接下来到**驱动程序**上。 WebDriver API 使我们可以拥有一些驱动程序，这些驱动程序知道如何驱动与之对应的特定浏览器。 我们有 Chrome 驱动程序，IE 驱动程序，Microsoft Edge 驱动程序，Firefox 驱动程序（内置）等。还有移动专用驱动程序，例如 iOS 驱动程序，Selendriod（适用于 Android 的 Selenium）等。例如，Chrome 驱动程序知道如何驱动 Chrome 浏览器执行低级活动，例如操纵 Web 元素，导航到网页，从中获取用户输入等等。

我们在代码中提到了所需的驱动程序。 该驱动程序服务器作为可执行文件提供。 当我们运行测试时，驱动程序服务器会监听本地计算机上的端口。 它将解释从 WebDriver API 接收的命令，在实际的浏览器上执行，并将结果通过 API 返回给我们的代码。

## 放大并将其放在一起：

在本系列中，我们将使用 Java 编写测试程序。 可以将其视为用于使浏览器自动化的脚本语言。 相应的 Java 绑定代码向 WebDriver API 发出命令。 与浏览器通信的 WebDriver 的所有实现都使用通用的有线协议。 有线协议基本上是基于 HTTP 的 RESTful Web 服务，以“命令”和“响应”的请求/响应对实现。 因此，我们可以将 HTTP 请求（例如 GET，POST，PUT 等）发送到驱动程序服务器。 该服务器是运行远程 WebDriver 的计算机。 例如，Chrome 驱动服务器是指直接实现有线协议的 Chrome 浏览器。 运行 Java 测试时，此服务器将监听并等待这些命令。 它会相应地解释它们，执行低级浏览器活动，然后以 HTTP 响应消息进行响应。

## 缩小：

语言级别绑定（发出命令）**->** WebDriver 通用有线协议（基于 HTTP 的基于 REST 的 Web 服务）**->** 驱动程序服务器（解释 HTTP 请求并以 HTTP 响应来响应消息 ）

如果您没有获得完整的图像，请不要惊慌。 休息片刻，因为有很多帖子可以跟进，随着我们的前进，您一定会获得清晰的了解。

注意，在 Eclipse 中设置 WebDriver 时，您将看到实际的 Java 语言绑定。 很快我们将下载驱动程序服务器可执行文件，将它们包含在我们的代码中，并使浏览器操作也自动执行。 因此，加油并注意即将发布的帖子！

很快见，祝您有美好的一天。

