本章介绍 Selenium 家族的另外一位成员——Selenium Grid。它主要用于自动化测试的分布式执行。
Grid 的两个版本的原理和基本工作方式完全相同,但是 Grid2 同时支持 Selenium 1 和 Selenium 2,并且在一些小的功能和易用性上进行了优化,例如指定了测试平台的方式等。
Grid2 不再提供单独的 jar 包,其功能已经集成到 Selenium Server 中,所以,想要使用 Grid2,就需要下载和运行 Selenium Server。
下载、配置和运行 Selenium Server。
1.下载 Selenium Server
下载地址:http://www.seleniumhq.org/download/
通过浏览器打开页面,找到 Selenium Standalone Server 的介绍部分,单击版本号链接进行下载,得到 selenium-server-standalone-xxx.jar 文件。由于 jar 包是用 Java 语言开发的,所以需要在 Java 环境下才能运行。
2.配置 Java 环境
Java 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html。
小知识:Java 环境分为 JDK 和 JRE 两种。JDK 的全称为 Java Development Kit,是面向开发人员使用的 SDK,它提供了 Java 的开发环境和运行环境。JRE 的全称为 Java Runtime Environment,是 Java 的运行环境,主要面向 Java 程序的使用者,而不是开发者。
根据操作系统环境选择相应的版本进行下载即可,本书以在 Windows10 下安装 JDK 为例进行介绍。
双击下载的 JDK 启动安装程序,设置安装路径,这里选择安装到 D:\Java\jdk-10.0.2\目录下。
安装完成后,设置环境变量,右击「此电脑」,在右键菜单中单击「属性」→「高级系统设置」→「高级」→「环境变量」→「系统变量」,单击「新建(W)...」按钮,添加名为 JAVA_HOME 和 CLASS_PATH 的环境变量。
变量名:JAVA_HOME
变量值:D:\Java\jdk-10.0.2
变量名:CALSS_PATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
找到「path」变量名,单击「编辑」按钮,追加配置。
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
在 Windows 命令提示符下查看 Java 版本。
还可以进一步通过输入「java」和「javac」命令验证。
「java」命令用于运行 class 字节码文件。
「javac」命令可以将 Java 源文件编译为 class 文件。
3.运行 Selenium Server
现在可以通过「java」命令运行 Selenium Server 了。切换到 Selenium Server 所在目录并启动,在 Windows 命令提示符(或 Linux 终端)下启动 Selenium Server。
java Selenium Server
当测试用例需要验证的环境比较多时,可以通过 Grid 控制测试用例在不同的环境下运行。Grid 主节点可以根据测试用例中指定的平台配置信息把测试用例转发给符合条件的代理节点。例如,测试用例中指定了要在 Linux 上用 Firefox 版本进行测试,那么 Grid 会自动匹配注册信息为 Linux 且安装了 Firefox 的代理节点。如果匹配成功,则转发测试请求;如果匹配失败,则拒绝请求。调用的基本结构如图 10-1 所示。

Grid 分布式测试的建立是由一个 Hub(主节点)和若干个 node(代理节点)组成的。Hub 用来管理各个 node 的注册和状态信息,接收远程客户端代码的请求调用,把请求的命令转发给 node 来执行。使用 Grid 远程执行测试代码与直接运行 Selenium 是一样的,只是环境启动的方式不一样,需要同时启动一个 Hub 和至少一个 node。
java -jar selenium-server-standalone-3.13.0.jar -role hub java -jar selenium-server-standalone-3.13.0.jar -role node
上面的代码分别启动了一个 Hub 和一个 node,Hub 默认端口号为 4444,node 默认端口号为 5555。如果想在同一台主机上启动多个 node,则需要注意指定不同 node 的端口号,可以通过下面的方式来启动多个 node。
java -jar selenium-server-standalone-3.13.0.jar -role node -port 5555 java -jar selenium-server-standalone-3.13.0.jar -role node -port 5556 java -jar selenium-server-standalone-3.13.0.jar -role node -port 5557
通过浏览器访问 Grid 的控制台,地址为 http://127.0.0.1:4444/grid/console。在控制台查看启动的节点信息,如图 10-3 所示。

在启动的 Hub 与 node 都在同一台主机上,如果想在其他主机上启动 node,则必须满足以下要求:
● 本地 Hub 所在主机与远程 node 所在主机之间可以用 ping 命令通信。
● 远程主机必须安装 Java 环境,因为需要运行 Selenium Server。
● 远程主机必须安装测试用例需要的浏览器及驱动文件,驱动文件需要设置环境变量。
(1)启动本地 Hub 所在主机(IP 地址为 172.16.10.66)。


(2)启动远程 node 所在主机(IP 地址为 172.16.10.34)。

设置 node 的端口号为 5555,「-hub」参数指定 Hub 所在主机的 IP 地址为 172.16.10.66。
参考资料:https://www.cnblogs.com/turbogirllu/p/11282920.html
第 10 章 Selenium Grid - Selenium3 自动化测试
原文:https://www.cnblogs.com/MarlonKang/p/12482037.html