Skip to content

第23讲:Selenium框架安装与使用


本课时我们开始进入对 Selenium 的学习,首先我们先来介绍 Selenium 的架构以及用途是什么。

Selenium 架构


我们可以看到 Selenium 的基础架构是这样的,它是用来做 Web 自动化测试的一个框架,整体架构采用这样一种模式,你可以使用 Python、Java、Ruby 等各种语言去编写你的自动化测试用例,然后测试用例会请求 Selenium 框架调用浏览器,浏览器的运行需要各自的 Driver 来驱动,Selenium 会借助每个浏览器的专属驱动来完成自动化。



我们可以打开 Selenium 的官网 selenium.dev,这是它的最新版本的官网,在官网中介绍了 Selenium 的整体用途,以及它的一些简单的 case 怎么去编写。



比如官网中的 Python 测试用例,整体逻辑是这样的,首先需要导入依赖,然后创建一个 Driver,接下来调用 Driver 来完成相应的方法,比如打开浏览器,然后根据特定的标签来定位元素,并往里面输入一些值,最后进入显式等待过程并校验结果是否正确,这便是 Selenium 的基本使用情况。

Selenium 核心组件

了解完基础架构和主要用途,我们来看下 Selenium 的基本组成部分,从开始的架构图中我们也可以看到 Selenium 主要包括 Selenium Webdriver Client,也就是每种语言的客户端;以及 Selenium Driver 用于驱动各个浏览器。


在 Selenium 老一点的版本中还包含 Selenium 1,主要使用 JS 注入模式来完成自动化测试,在新版本中该组件已经被废弃了,我们现在更多的使用的是 Driver 模式。然后它也提供了一定的生态环境,比如像 Selenium IDE,用于录制 case。还有 Selenium Grid 用于多浏览器管理。

Selenium 安装

我们看下 Selenium 具体怎样安装。首先,Selenium 各个组件的安装你需要先有一个浏览器,我们大部分同学的本地都是有浏览器的,所以你只需要找到本地浏览器的 Driver 就可以了。


我们以我的本地浏览器 Chrome 为例,第一步需要我们做的是安装 Selenium的Chrome Driver,并把它放入一个 Path 变量中,接下来需要安装 Selenium Client,Client 是每个语言的一个语言库,这个时候我们可以使用前面学习过的 PyCharm 或 Python pip 的方式来进行安装。


最后我们安装浏览器的扩展 Selenium IDE,IDE 可以帮助我们录制一些入门级的 case,随着你个人能力的提升你也可以不再使用 IDE,而是直接编写 case。


我们具体看下怎么安装 Selenium,首先是下载浏览器驱动,比如 Chrome 的驱动你可以从这个网址https://npm.taobao.org/mirrors/chromedriver进行下载。


我们打开网址,你可以在"关于Chrome"里找到 Chrome 的版本设置,然后便可以根据你的浏览器的版本下载对应的驱动了,下载完成之后你需要把 Driver 放到系统的 Path 变量中去,这个时候我们打开 Shell。Windows的同学可以使用Git Bash。


which chromedriver

首先通过这条命令检查系统的 Path 变量里面有没有 chromedriver工具。



找到工具之后,你需要先验证能不能启动它,为了节省时间这里是我之前下载的版本,这样第一步就完成了。下载 Driver 并把它赋值给 Path 变量,然后确保能够正常启动它,这样就说明你已经安装完成了。

Selenium IDE 用例录制

接下来,我们就可以使用 Selenium 的一个扩展来完成简单的 IDE 的录制了,当然你也可以不使用 IDE 录制,直接写代码也是可以的。


我们先来看下入门的引导录制工具是怎样使用的,首先行业内有两个比较常用的录制工具,一个叫作 Selenium IDE,一个叫作 Katalon Studio,这两个工具都非常不错,今天我们使用官方的Selenium IDE 来进行演示。



你可以在 Chrome 里面通过扩展打开 Selenium IDE,也可以自行的安装它,安装完成之后你可以根据引导来一步一步完成你想要的 case。



比如我们创建一个 testchrome 的案例。



然后,我们打开 testerhome 的网址。



打开完成之后,我们就可以看到整个界面,我们在搜索栏中输入 appium,然后按回车。



这个时候就可以搜到一条记录,然后点击取消,我们回到 Selenium IDE。



点击关闭代码。



然后给这个 case 起一个名字,比如叫 search,这个时候其实就已经生成了一个很好的录制脚本了。



你可以使用 python pytes t将录制脚本导出,然后给定一个目录进行存储就可以了。



从这里你可以看到录制的 case 是这样的,这样我们的第一个 case 就录制完成并生成出来了,你可以看到 IDE 的使用是非常简单的,只需要把你录入的 case 导入到你的项目里面去就可以了。

测试用例编写

基本的 case 生成之后,接下来我们来了解如何编写测试用例,然后并运行它,关于如何编写测试用例这里有一个入门文档 https://selenium-python.readthedocs.io/。


我们打开这个网址,这个是 Selenium Python 库的一个使用文档,文档中介绍的也非常的详细,告诉你是如何入门的,以及它的一个简单使用,还包括一些高级功能应该如何使用,等等。


接下来,我带你编写一个小的 case,首先我们刚才已经录制了 case 并且也装了 Chrome 的驱动了,这个时候基本的条件就已经满足了,那我们去运行我们的第一个 case。

用例的关键要素

首先,我们看下测试用例的一个结构分析,测试用例的结构差不多可以分为四大部分:

  • 导入依赖

  • 创建 Driver

  • 执行自动化步骤

  • 断言



我们回到项目中,给你看下 case 的基本结构,这是我们已经录制好的 case,你可以看到类名叫作 TestSearch,然后 setup、teardown 方法中都有完整的对浏览器 Driver 的初始化及退出处理,中间代码是测试的 case,这基本上就符合我们的测试用例结构的,首先是导入依赖,接着是创建Driver,然后执行你的 case,最后在加一个断言就可以了,断言你可以使用 assert 去获取某一个控件的内容或者属性。


这就是整个 case 的编写过程,我们试着去运行我们的 case,首先这里如果提示有报错,你需要安装对应的依赖,


现在 Selenium 已经把所有的代码和依赖都已经帮我们生成好了,接下来我们只需要运行它就可以了,我给你演示下怎么去运行,首先我们点击运行,你可以看到它驱动起来一个浏览器,并按照我们刚才录制的 case 的顺序进行执行,这时 case 就运行成功了,可以看出录制功能是非常强大的,基本上一步到位就全部帮你自动生成了。


但随着测试用例的增多,断言的增加,或是你的公司需要的测试越来越复杂,这个时候 Selenium IDE 可能就无法满足你的需求了,我们就需要使用 Page Object模式来解决问题了,关于 Page Object 的使用我会在后面的课时进行详细的讲解。