经过上面的讨论,我们已经窥探到自动化测试的端倪,但是要想写出一个可以运行的自动化测试用例,我们还需要更深入的学习。以下的内容,我们将一步步的来探讨自动化测试的秘密。
“工欲善其事,必先利其器。”当然自动化测试也不例外,我们用
到的工具及语言如下:
(1)Selenium IDE:作为火狐的一个插件,是我们 Web 自动化测试
中必不可少的。
(2)FireBug:火狐的一个插件,帮助我们定位页面元素。
(3)Eclipse:强大的代码编辑工具,相信大家并不陌生。
(4)PyDev:Eclipse 的插件,用于编辑 Python 代码。
(5)Python:我们测试用例的编码语言,请自行学习,本系统教程是不再讲究 Python 编程的内容。
(6)WebDriver:selenium2.0,Web 自动化测试主要框架。
2.1 Selenium IDE
2.1.1 Selenium IDE 简介
Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直
接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括
IE、Mozilla Firefox、Mozilla Suite 等。这个工具的主要功能包括:
- 测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
- 测试系统功能——创建衰退测试检验软件功能和用户需求。支持
- 自动录制动作和自动生成。
- 支持 python、Net、Java、Perl 等不同语言的测试脚本。Selenium 是
- ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。
Selenium IDE
- Selenium IDE 是基于 FIREFOX 浏览器的一个插件,提供 GUI 界面来
- 运行 Selenium 测试。Selenium IDE 提供脚本录制功能,可以将用户在
- 浏览器中执行的操作记录下来,生成各种形式的脚本,可以将这些脚本保存供以后使用。
2.1.2 Selenium 安装
方法一,安装 Selenium IDE 的步骤如下:
- 从 www.openqa.org/selenium-ide/download.action 下载 SeleniumIDE(一个 XPI 后缀的文件)。
- 启动 FIREFOX 浏览器,打开刚才下载的文件。
- 重启 FIREFOX 浏览器,在工具菜条下应该就可以看到 Selenium IDE
- 菜单项。
方法二,从 Firefox 浏览添加
- 打开浏览器,打开菜单“工具”“附加组件”,在打开的页面搜索 Selenium。
- 安装 Selenium IDE Button,安装完成的重启浏览器
- 定制工具栏,将 Selenium IDE Button 拖到工具栏上,然后单击这个 Button,按提示安装 Selenium IDE,这个时候选择最新的版本即可。
注:Selenium IDE 安装完成后,默认打开了所有支持语言的格式,如
图 2.1.2 所示,我们可以禁用到不用的语言项。
图 2.1.2 Selenium IDE 支持的语言格式
2.1.3 Selenium IDE 的使用
下面我们将逐步讲 Selenium IDE 的使用方法:
- 安装 Selenium IDE。
- 启动 Selenium IDE:打开“工具”—>“Selenium IDE”,IDE 启动后,弹出如图 2.1.3.1 对话框:
上图标明了一些 Selenium IDE 的主要功能。其中,由 Command,Target,Value 组成的表格就是脚本,每个脚本都是由一条一条的Action(行为)组成,而每个 Action 又由(Command,Target,Value)三者组成。Command 就是《API 参考手册》提到的内容,Target 指的是 Web 中的某个对象,比如:文字,输入框等等,如果选取对象呢?呵呵,这里就用到了 XPath,不熟悉可以参考《XPath 的使用》,后面我们也将会讲到相关内容;而 Value 就是这个对象的值。
- 脚本的录制及运行
当弹出上面的 IDE 窗口后,我们就可以开始 Selenium 的脚本录制了,右上角有个红色的圆点,当它下按时(如上图)就表示 IDE 正
在进行脚本录制。OK,开始录制,录制的时候,直接操作 Firefox 浏览器窗口就可以了,IDE 会自动记录你的操作的,下面我演示一个例子:
(1)打 开 IDE, 在 Base URL 框 内输入 你要 录制 的网站 ,如 :http://www.baidu.com。
(2)在地址栏输入:http://www.baidu.com/,登录到百度首页。
(3)IDE 打开的时候就是录制状态,如果录制按钮没有按钮,按下该按钮然后刷新页面,在查询框输入“hyddd”。
(4)按“百度一下”按钮,查询结果。
(5)进入搜索结果页面后,右键单击第一条记录,在右键弹出菜单中,单击“Verify TestPersent
(6)单击第一条记录(即:进入 hyddd - 博客园)
(7)Firefox 弹出一个新 Tab 页面,并进入了我的博客。OK,现在看看我们的 Selenium IDE 录制的结果吧!如图 2.1.3.2 所示:
上图中,中间的表格就是录制的结果,你可以按“运行脚本”重新回放脚本看看,值得注意的是,在运行时,Firefox 可能会认为脚本中最后一个操作(即:步骤 7)为非法弹出框,浏览器会自动阻
止其弹出,这个需要设置一下 Firefox,具体位置是:Firefox->Menubar->Tools->options->content->Block pop-upWindow,你可以把钩去掉或者在 Exceptions 里面添加相应的网址。到此为止,脚本录制圆满完成!在运行脚本后,你会发现 IDE 表格的颜色发生了变化,运行前,脚本表格为白色,成功运行完毕后,表格为青色,其中还分为深青色和浅青色两种,浅青色表示:动作成功,如:打开网页成功,点击按钮成功等等,而深青色表示:判断正确,如:“hyddd - 博客园”这段文字在页面中存在等等。
那如果运行失败会是什么样子呢?现在我们看看出错时的情况吧。
如图 2.1.3.3 所示:
图 2.1.3.3 脚本运行错误的情况
出错时,表格可能会出现两种颜色,一种是浅粉红色,一种是深粉红色。浅粉红色表示判断结果为 false,这种情况案例还是会继续执行下去,判断的失败不会影响案例的运行,深粉红色表示动作失败,如:没有找到按钮等(如上图),这种情况下案例会停止运行。
2.1.4 Selenium IDE 其他的重要功能
- 脚本转化保存
Selenium IDE 录制完成脚本后,经过我们回放验证,发现可以达到我们的要求,此时我们最想做的事情就是把脚本转化成我们期望的形式保存来了。
不要担心,Selenium IDE 有这个功能,如图 2.1.4.1 所示:
打开“文件”-->“Export Test Case As„”,打开的二级菜单中就是可以转化成的格式。在我们安装 Selenium IDE 的时候,我们只保存了 python 和 java 格式的,而在此只有这两个格式。此时我们需要第一种格式“python2/unittest/WebDriver”,然后在打开的对话框中输入文件名,扩展名输入“.py”,保存即可!
- 验证定位方式是否正确
Selenium IDE 虽然可以录制脚本,可是在我们使用过程中,如果测试用例是采用模块化编码时,不需要反复录制的。此时,IDE 就可以帮我们验证我们的定位方法是否正确。
如图 2.1.4.2 所示:具体验证方法,我们将在定位页面元素章节讲解。
2.2 FireBug
2.2.1 FireBug 简介
Firebug 是网页浏览器 Mozilla Firefox 下的一款开发类插件,现属于 Firefox 的五星级强力推荐插件之一。它集 HTML 查看和编辑JavaScript 控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML 和 Ajax 的得力助手。Firebug 如同一把精巧的瑞士军刀,从各个不同的角度剖析 Web 页面内部的细节层面, 给 Web 开发者带来很大的便利。
2.2.2 FireBug 的使用
FireBug 的 安 装 和 使 用 , 可 以 参 考 这 个 文 档 :
http://jingyan.baidu.com/article/fd8044fa97e08c5030137a6c.html此文档把 FireBug 的基本使用方法都介绍了一下,还是比较详细的,在此就不一一介绍了!下面我就把我们自动化测试中对 Firebug 的应用,以一个实例来简单介绍一下:
页面元素定位
(1)打开微博,登录一个账号,以本人的账号为例。
(2)查看我的微博昵称“rebort”,在页面 HTML 编码中的节点,按图 2.2.2.1 中的步骤所示:
图 2.2.2.1 查看页面元素
步骤讲解:
(a) 单击浏览器工具栏上 Firebug 启动按钮,图中 1 处,启动 Firebug。
(b)单击 firebug 元素查看按钮,图中 2 处,然后将鼠标移到要定位的元素上,如图中标 3 处,当昵称“rebort”被框中后,单击鼠标。
(c) 此是 Firebug HTML 标签下显示的内容被选中的内容,就是昵称对应的元素在 HTML 中的位置,找到这个位置后,我们就可以编写元素定位的方法了
定位方法唯一性查找
当我们用 Firebug 查到一个元素的某个属性值为“feed_list”,欲用xpath 定位,但是如果这个元素的这个属性在页面中不唯一,而且这个元素不是第一个符合条件的元素时,则会定位失败。所以定
位前我们需要查看一下唯一性!如图 2.2.2.2 所示:
图 2.2.2.2 查找 feed_list 的结果在 Firebug 的查找框输入“feed_list”,然后单击回车查找。此时就会
发现有很多条件条件的元素,证明这个属性值不唯一,所以不能用这个属性值定位。
2.3 WebDriver Python 开发环境搭建
上 面 是 所 用 到 的 工 具 的 介 绍 , 下 面 我 们 开 始 着 手 搭 建WebDriver+Python 在 windows 下的运行环境。
2.3.1 工具选择
操作系统:Windows 7 64 位。
- Python 版本: 选择 2.7.X。目前大部分第三方库和工具对 2.7 都有简单的安装包,不需要自己做太多处理,比 2.6 内置了一些包,不需要再安装; Python3.x 不支持 Selenium2.0。
- Selenium 版本:python 自动安装最新的包,如果手动安装不能低于 2.0,因为从 2.0 开始,Selenium 已经和 WebDriver 集成在一起了,WebDriver 提供了非常多的 API 和自动化测试处理方法。
- 脚本开发工具:Eclipse(JDK:选择 1.6 版本),其中插件选择:PyDev,专门对 python 进行开发。
2.3.2 Python+Webdriver 安装
请按以下步骤安装 python+Webdriver 运行环境:
第一步:安装 Python
根据下面的地址,直接一键安装,全部默认方式。
下载地址http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi。
- 设置 Python 的环境变量:,修改我的电脑->属性->高级->环境变量->系统变量中的 PATH 为 PATH:“C:\Python27;”
- 上述环境变量设置成功之后,就可以在命令行直接使用 python 命令。或执行"python *.py"运行 python 脚本了。
- 此时,还是只能通过"python *.py"运行 python 脚本,若希望直接 运 行 *.py , 只 需 再 修 改 另 一 个 环 境 变 量 PATHEXT 为 :PATHEXT=PATHEXT;.PY;.PYM
第二步:安装 Python 的 SetupTools
- 其实 SetupTools 就是一个帮助你安装第三方工具包的增强工具软件,根据下面的地址下载,然后一键安装。下载地址:http://pypi.python.org/packages/2.7/s/setuptools/setuptools
- -0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20
第三步:安装 Python 的包管理工具
pip 有 点类 似 SetupTools ,打 开 DOS 界 面, 进入 到目录 :
C:\Python27\Scripts, 然后敲入命令: easy_install pip, 等待完成就 OK。如图 2.3.2.1 所示:
第四步:安装基于 Python 的 Selenium 包打开 DOS 界面,进入到目录: C:\Python27\Scripts,然后敲入命令: pip install selenium,回车后就会自动下载最新的 selenium包,并进行安装。
第五步:验证 Selenium 安装是否成功在记事本中编写下面的代码:(保存为 pytest.py,然后直接运行即可!)
#pytest.py
from selenium import webdriver
browser=webdriver.Firefox()#获取本地火狐浏览器
browser.get("http://www.baidu.com")#打开百度首页
assert "baidu!" in browser.title
browser.close()
将上面代码保存,然后在命令行下找到此文件,python pytest.py运行。如果能成功打开火狐浏览器,并打开了雅虎首页,则说明Selenium 安装成功。
2.3.3 Eclipse python 开发环境配置
Eclipse 是强大的开发工具,所以我们也采用这个工具编写我们的自动化测试用例。其插件 pydev,更能方便地编辑和运行 python 脚本文件。下面我们就开始配置这个开发环境:
第一步:安装 JDK6、Eclipse
注:JDK 和 Eclipse 都要用 64 位,否则有可能遇到问题。
JDK 需要配置环境变量(详细见
http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html)
下载 JDK:http://download.csdn.net/download/xiaoxiaoxinyuan8/5796753
eclipse 下载:
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release
/indigo/SR1/eclipse-java-indigo-SR1-win32-x86_64.zip
当然你也可以自行在网上搜索下载,JKD 最好用 6,不过好像 8 也支持。可能尝试用最新版本 ,如果有问题,就降下来,毕竟低版本用的时间长,比较稳定,但也存在不包括最新的功能的风险。
第二步:给 Eclipse 安装 PyDev 插件
启动 Eclipse ,在 Help 菜单中,选择 Install New Software•••,选择 Add 按钮,Name:PyDev,Location:http://pydev.org/updates
(PyDev 的更新地址),单击 OK,开始查询。如图 2.3.3.1 所示:
然后在打开的对话框中选择 PyDev 下的 PyDev for Eclipse,别的都不要选,否则依赖检查那关过不去。如图 2.3.3.2 所示:
点下一步安装,中间会出现是否信任 Aptana、Pydev,选择信任即可,最后重启 Eclipse(如果第二步不能成功,尝试从官网上下载Pydev2.8.1 版本,直接覆盖到纯净版 eclipse 插件文件夹下,重启eclipse 即可)。另外需要下载 MySQL-python.rar 插件,直接安装,重启 eclipse。
不同的环境和版本可能会出现不同的问题,大家需要去网上查询相关的解决办法,在此就不一一穷尽。
第三步:配置 PyDev 插件
在 Window – Preference –PyDev– Interpreter-Python, 单 击New...按钮,在弹出的 Select interpreter 窗口中单击 Browse...按钮,找到已经安装的 Python 解释器。如图 2.3.3.3 所示:
单 击 Select interpreter 窗 口 中 单 击 OK 按 钮 , 在 弹 出 的Selection Needed 窗口中单击 Select All 按钮,然后单击 OK 按钮完成设置。如图 2.3.3.4 所示:
然后在 Preferences 窗口中选择 Apply—>OK 完成设置。如图2.3.3.5 所示:
第四步:配置 Python 编码格式
统一编码格式,把 PyDev 的编码格式修改成 UTF-8,默认采用 GBK编码。取消 u' ...'形式的 unicode 文本表示,保存文本的数据类型是 str,保存数据的数据类型是 bytes。由于默认采用 utf-8 编码,只要保持.py 文件的字符编码也为 utf-8 格式,不用再在头部声明程序的编码类型,即不用写# -*- coding: utf-8 -*-;采用如下方法:
修 改 PyDev 编 码 格 式 , 在 Window-->Preference General->Editors->Text Editors->Spelling , Encoding 改 成Other:UTF-8 。修 改 Workspace 编 码 格 式 General->Workspace , Text file encoding 改成 Other:UTF-8 。修 改 python 编 码 格 式 : 找 到 安 装 目 录 下 的
\plugins\org.python.pydev.debug_x.x.x.yyyymmddhh\pysrc\pydevd.py,920 行的 encoding = Non 改成 encoding = "UTF-8",保存 (有的环境可能没有这个文件,如果找不到就忽略)。
至此,PyDev 的配置就完成了。
注:如果没有配置编码规范,运行python 脚本时会报错。
在 PyDev Package Explorer 的项目上右键,New->PyDev Module,随便写个名字,Finish。 然后随便写几行代码,Run 在弹出的对话框中选择 Python Run,如果运行成功,则说明 Pydev 环境配置没有问题。如图 2.3.3.7 所示:
2.4 本章小结
经 过 本 章 的 学 习 , 我 们 可 以 完 成 Windows 环 境 下Webdrvier+Python 开发环境的配置。当配置完成后,你也可以把先前我们用记事本编辑的测试用例拿到 Eclipse 中测试运行一下,结果和前面完全相同。在 Linux 和 MAC 环境下配置类似,只是安装方法有所不同,找到相应环境的插件及工具,自行安全即可。再用本章中提到的例子,去验证一下,如果没有问题,说明环境配置成功。有了好的开发环境,我们还需要努力学习,才能真正地掌握如何在这个环境下编写自动化测试用例。从下面的章节,我们将开始讲解自动化测试用例的编写知识。