Selenium 是一款非常流行的 GUI 自动化测试工具,学好它成为了一个测试工程师的必备技能。从这一篇文档开始,我们来详细说明其技术细节,以及如何更好地运用于实际。让我们开始吧。

本系列的文档假设读者已经具备了 Python3、HTML、CSS 以及 JavaScript 的基础知识。

Selenium 的特性

对于一个测试工程师而言,Selenium 只不过是手头的一个工具而已。那么首先要做的是不是学习工具如何使用,而是应该先问问自己为什么要使用它。不然就会陷入手里有一把锤子,看什么都是钉子的思维陷阱中。学习其他技术也是一般,首先要了解工具的应用场景以及特性,然后在考虑要不要学、要不要用。

Selenium 是一款基于 GUI 的测试工具,这就决定了它的应用领域仅仅是 Web GUI,而不是 App、也不是接口。然后它拥有如下的特性:

• 开源免费的框架
• 支持多种浏览器、比如说 Chrome、Firefox、IE 等。
• 支持多种开发语言,比如说 Java、Python、C#、Ruby、JavaScript、Kotlin,不排除官方会支持更多的语言。
• 支持并发测试,支持在多台机器上并发执行测试。

这里需要说明的是,IE 浏览器即将退出历史舞台,相应的微软推出了 Edge 浏览器。不要以为 Edge 浏览器是 IE 浏览器的升级版,Edge 是基于 Chrome 内核编写的全新的浏览器,正对 Chrome 内核进行了大量的优化。

另外,虽然 Selenuim 支持非常多的编程语言,但是本系列的文档暂时按照 Python 语言来编写代码。事实上,我也建议开发团队使用 Python 而不是其他语言来编写 Selenuim 脚本,这类的脚本并不需要使用 Java 那样沉重的工程化语言编写。

发展历史

Selenium 到目前为止,一共经历了三个大的版本,从 1.0 到 3.0。1.0 版本开始提供了 Selenium IDE、SeleniumGrid、Selenium RC 三个工具。其中 2.0 版本获得了极大的成功,使用了 WebDriver , 在 3.0 版本中,移除了 Selenium RC。

• Selenium IDE 是一个基于 Firefox 浏览器的插件,可以实现对浏览器操作的录制和会犯,录制的脚本可以转化为多种语言。
• Selenium Grid 主要用于并发测试。
• Selenium 和 WebDriver 原本是两个项目,后来合二为一。
关于这部分,了解一下就可以了。知道至今共经历了三个大的版本,最大的变化在于使用 WebDriver 替换了 Selenium RC。当前是 3.x 版本,相对于 2.x 版本做了如下修改:
• 去除 Selenium RC 组件。
• 遵循 W3C 的标准。
• 扩展 WebDriver API 的功能,提供了移动端的测试套件。
• 支持 IE9.0 以上版本以及 Windows Edge 浏览器。
• 支持 Java 8 以上版本。

开发环境说明

关于开发环境,大家都应该学着自己去尝试搭建。说得明白一点,所谓的开发环境,大多数情况下只是开发需要一些软件,下载安装即可。那么 Selenium 的开发环境需要那些软件呢?

  1. 操作系统的选择,你可以选择 Windows、Linux、MacOS 都可以。
  2. Python IDE 的选择,你可以选择记事本或者 PyCharm,相信你会选择后者。
  3. 浏览器的选择,一般情况下选择 Chrome 或者 Edge 即可。
  4. 需要下载浏览器的驱动,使得 Selenium 框架可以驱动浏览器按照我们书写的脚本 Running。

关于第 4 点,特别提醒一下,驱动需要通过 Selenium 官方网页下载 ,如下图所示:

注意: 不同的浏览器、不同的浏览器版本,对应的 WebDriver 也是不同的,一定要版本一致,避免不必要的麻烦。

下载之后,需要将 WebDriver 的可执行程序存放于系统的环境变量 $PATH 中的目录中去。如何查看 $PATH 环境变量呢?可以在终端中输入 echo $PATH 查看当中包含的目录,比如我使用的是 Windows 操作系统,就将其存放于 C:\Users\<用户名>\bin 目录下。如果你使用的是 Linux 或者 MacOS 操作系统,就可以将其存放于 /usr/local/bin 目录下。

Python 的安装就不说了,以及对应的 Selenium 库的安装。相信看到这里的读者都具备 Python 的基础能力,可以参考《Python 环境搭建》一文。另外,Python 的版本选择最新版即可。

注意: 在使用 pip 的过程中如果出现无法下载的情况,可以尝试使用阿里云的镜像,在 pip 命令中加入参数:

pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

打开和关闭浏览器

接着,我们就可以动手来写一段代码,来打开浏览器并跳转到我们指定的网页。在完成了这一操作之后,我们关闭浏览器即可。代码如下:

from selenium import webdriver

driver = webdriver.Chrome()		# 创建一个 Chrome 的驱动
driver.get('https://www.baidu.com')		# 驱动浏览器打开百度的主页

当我们测试结束之后,如何关闭浏览器呢?代码如下:

driver.close()		# 关闭浏览器
最后更新于:
2021.04.06