1.2 Selenium简介

在1.1节中,我们介绍了自动化测试的相关概念,那应该借助什么工具或者框架来实现UI自动化测试呢?相信读者听说过各种各样的自动化测试工具,不过近几年最为流行的开源自动化测试工具非Selenium莫属。

1.2.1 Selenium的特点

Selenium是一个用于Web应用程序的测试工具。在浏览器中可直接运行Selenium测试,就像真正的用户在操作一样。Selenium具有以下特点。

●免费、开源。

●支持多语言(C、Java、Ruby、Python、C#)。

●支持多平台(Windows、macOS、Linux)。

●支持多浏览器(IE、Firefox、Chrome、Safari、Opera等)。

●分布式(可以把测试用例分布到不同的测试机器上执行,相当于分发机的功能)。

●技术支持(成熟的社区、大量的文档支持)。

总之,Selenium是一个成功的开源软件,其在发展过程中获得了很多公司和独立开发者的支持,同时也被众多公司和项目组选为UI自动化测试的工具。

1.2.2 Selenium发展历史

Selenium最早诞生于2004年,由ThoughtWorks的员工贾森·哈金斯(Jason Huggins)开发并开源,后续有多位开发人员加入。Selenium不断迭代更新,目前被广泛使用的是Selenium 3。

(1)Selenium 3包含的3个部分

◆Selenium WebDriver

WebDriver是Selenium的核心部分,其提供了各式各样的接口,供用户实现Web UI自动化测试的功能。

◆Selenium IDE

Chrome和Firefox浏览器有对应的Selenium IDE插件。借助插件,我们可以录制和回放浏览器操作,从而快速创建自动化测试。

◆Selenium Grid

为了提升测试效率,需要将自动化测试脚本分发到不同的测试机器上执行,此操作可以借助Selenium Grid来实现。

(2)Selenium 3的新特性

●Selenium 3去掉了RC。

●支持Java 8及以上版本。

●不再提供默认浏览器支持,所有浏览器均由浏览器官方提供支持。例如,Firefox官方提供geckodriver来驱动Firefox浏览器。

●在Windows 10上可以对Edge浏览器进行自动化测试。

●Apple提供了SafariDriver,以支持macOS中的Safari浏览器。

●Selenium 3支持IE 9.0及以上版本。

1.2.3 WebDriver组件

使用WebDriver构建测试之前,我们先要了解相关的组件。

(1)本地执行

本地执行的最基础结构如图1-1所示,WebDriver通过Browser Driver与浏览器通信,并且以同样的路径来接收浏览器返回的信息。

注意▶ 不同的浏览器需要不同的Browser Driver来驱动。

(2)远端执行

如果不想在本地执行测试,我们还可以借助Remote WebDriver实现在远端执行测试,如图1-2所示。

图1-1 本地执行

图1-2 远端执行

注意▶ Remote WebDriver、Browser Driver与浏览器在同一系统上。

(3)集群执行

借助Selenium Server或Selenium Grid,我们可以实现集群执行的效果,如图1-3所示。

(4)框架执行

WebDriver的长处是可以配合Browser Driver与浏览器进行通信。但WebDriver对测试相关事情不太擅长,例如它不知道如何比较事物,如何断言成功或失败。这些问题是需要各种框架来解决的,因此需要选择一种与开发语言相关的测试框架。如本书以Python作为开发语言,所以选择了unittest和Pytest框架。测试框架负责执行WebDriver中与测试相关的步骤,如图1-4所示。

图1-3 集群执行

图1-4 框架执行