2012-06-09 23:05:27| 分类:php |举报|字号 订阅
Selenium-IDE (Integrated Development Environment [集成开发环境]) ,它是一个开发Selenium测试用例的工具。它也是一个使用简单的Firefox的扩展,可以让你高效的开发测试用例。
下面的章节,将介绍Selenium IDE如何使用。
安装IDE
使用Firefox,下载IDE:[如果官方网站被墙了…要下载请点击这里]
Firefox会弹出一个安装扩展的提示,这时候选择“Allow”
跟着Firefox会弹出安装扩展的窗口,选择”Install Now”
安装完成后,会提示你重新启动Firefox,选择”Restart Firefox”
重新启动之后,在“工具”(Tools)菜单里面,就会多了“Selenium IDE” 这项功能了。
打开Selenium IDE
选择“工具”(Tools)菜单中的Selenium-IDE 打开 Selenium IDE。
IDE 功能:
菜单栏
这里提一下Help菜单里面的“UI-Element Documentation”是蛮有用的帮助文档。其他部分略过。
工具栏
下面是工具栏上面按钮的一些介绍:
速度控制:控制测试用例的执行速度
执行全部:执行测试套件(test suite)中的所有测试用例
执行:执行单全选中的测试用例。
暂停/继续:暂停和继续执行测试用例
单步执行:让测试用例一个一个命令执行。
捆绑规则:这个高级的功能允许一连串的 Selenium命令组合成一个动作。具体的介绍参见帮助菜单中的”UI-Element Documentation”。
录制:录制用户在浏览器中的 操作。
创建测试用例
有3中首选的创建测试用例的方式
1. 录制
很 多第一次使用的用户,都是通过录制和网站的交互,来创建测试用例的。当Selenium-IDE第一次开启的时候,录制的按钮是默认开启的。如果你不想开 启Selenium-IDE的时候,录制就开始,你可以通过选择Options菜单,取消“Start recording immediately on open” 。
在录制的期间,Selenium-IDE将会自动往你的测试用例插入命令。一般是包含以下的这些命令:
(1). 点击一个链接——click 或者 clickAndWait命令
(2). 输入一个值——type命令
(3). 选择下拉框中的选项——select命令
(4). 选择checkbox或者radio按钮——click 命令
以下是一些要注意的问题:
(1). type命令可能需要点击页面的某一个区域后它才能被录制
(2). 点击一个链接后,通常会产生一个click命令。你通常需要将这个命令改成clickAndWait来保证你的测试用例会暂停,直到新的页面加载完成。否则,你的测试用例将会在新页面没有加载完成就继续执行,这样子就可能导致测试用例出现很多失败。
2.通过右键菜单添加校验和断言命令
你的测试用例需要检查页面的一些属性。这就需要assert 和 verify 命令了。这里不会讲述assert 和verify命令的详细用法,这些用法会在后面的章节讲到。这里讲的是如何简单的将他们添加到你的测试用例中。
开启Selenium-IDE录制功能,然后鼠标右键点击你正在测试的页面的任何一个位置,你将会看到一个菜单项显示verify 或者是 assert命令:
如果你是第一次使用Selenium,那么将会只有一个Selenium命令出现在右键菜单中。使用多了之后,你会发现很多其他命令会添加到右键菜单中。Selenium-IDE会预测你你需要的命令,还有参数。
3. 修改现有命令和注释
(1) 插入命令(insert Command)
表格视图(Table View)
在表格视图中,左键点击你需要插入命令的那一行。然后点击右键,选择插入命令(Insert Command)。IDE将会在你选择的那一行的上面添加一个空白行。现在就可以在下方的命令面板中,修改你的命令了。
源代码视图(Source View)
首先进入源代码视图,然后在你需要插入命令的地方点击左键,并敲入你的命令,注意这里的输入的是HTML格式的需要有3列的表格代码。3列分别是:命令、第一个参数、第二个参数。
还有注意首先保存,然后才能切换到表格视图(Table View)。
(2) 插入注释(insert Comment)
注释会让你的测试用例可以更加容易让别人了解,这些注释在测试用例执行的过程中是会被忽略的。
表格视图(Table View)
选择你需要插入命令的地方,点击右键,然后选择“Insert Comment”,然后在下方的命令面板中,Command的输入框中填入注释内容,你的注释将会是紫色的字体。
源代码视图(Source View)
选择源代码视图(Source 标签)然后再你需要插入注释的地方添加HTML格式的注释。例如 :
(3) 修改命令或者注释
表格视图(Table View)
选择你需要修改的命令或者注释,然后再下方的命令面板中修改Command、Target和Value的值
[ps] 注释只需要修改Command的内容,Target 和Value都是没用的。
源代码视图(Source View)
选择源代码视图之后,直接修改HTML代码。
(4) 打开和保存测试用例
就像很多程序那样,“保存(Save)”和“打开(Open)”的操作都是在“文件(File)”菜单下面的。不过Selenium区分测试用例 (Test case) 和 测试套件 (Test Suite)。你可以保存测试用例或者保存整个测试套件。
运行测试用例
在IDE中,有多种的方式可以让你运行测试用例。你可以一次过执行它,停止或者继续它,或者是单步执行等。
执行一个测试用例
打开一个测试用例点击运行按钮。
执行一个测试套件
打开需要运行的测试套件,然后选择“执行所有(Run All)”按钮
停止和继续
“暂停(Pause)”按钮可以用来停止正在运行的测试用例。当点击暂停之后,这个按钮会变成“继续(Resume)”按钮,通过继续按钮,则可以继续执行测试用例。
在测试用例中间开始
你 可以在测试用例中设置一个起始点(StartPoint),让它一开始就从这条命令开始执行。这对于调试你的测试用例非常有用。设置起始点:选择一个命 令,右键点击,选择”Set StartPoint(设置起始点)” 或者 “Clear Start Point(清除起始点)”。
执行单条命令
双击任何一条命令,IDE则会执行这条命令。
使用基准URL (Base URL) 在不同域名下运行测试用例
基准URL(Base URL)输入框是在Selenium-IDE窗口的上部,它可以让你的测试用例在不同的域名下执行。例如一个网站的网址是:http://i-giraffe.com, 它有一个自己测试用的域名http://beta.i-giraffe.com。所有这个网站的测试用例,open命令里面的相对URL(relative URL),Selenium-IDE根据基准URL生成绝对的URL。
例如:基准URL是 http:news.portal.com
那么下面的open命令则是打开http://newsportal.com/about.html
同样的测试,如果修改了基准URL为http://beta.news.portal.com
那么打开的页面将是http://beta.news.portal.com/about.html
调试(Debugging)
通过调试你可以发现和修复测试用例中的错误。这是测试用例开发的一个过程。
断点
Selenium-IDE支持断点的功能,断点可以让测试用例在你需要的位置暂停。
设置断点可以通过选中一个命令,右键点击,在右键菜单中选择“Toggle Breakpoint”。然后点击执行按钮的话,你的测试用例将会执行到这个断点处暂停。
起始点
在 某些情况下,在测试用例的中间开始执行是蛮有用的。和断点类似,你可以设置一个起始点(Startpoint)。例如,你首先需要登录,然后执行一系列的 测试,然而你只需要登录一次。这时候,你可以先登录一次,然后设置一个起始点在登录动作之后。这样子你就不需要每次都做一次登录的流程了,而且也不需要每 一次重新运行你的测试用例前进行登出的操作了。
设置起始点可以通过选择一个命令,右键点击,在右键菜单中选择“Set/Clear Start Point”。然后点击执行按钮的话,你的测试用例将会从起始点开始执行。
单步执行测试用例
需要单步执行(一次执行一个命令)一个测试用例,可以通过下面的步骤:
1. 点击执行按钮
2. 立即点击暂停按钮,暂停测试用例的执行。
3. 重复的点击“Step(单步执行)”按钮
Find (查找)按钮
Find按钮是要来查看当前页面元素是否存在。当编写一个定位器时(locator,要来定位页面元素,如ID或者XPath),Find按钮可以要来校验定位器是否有效。
在表格视图(Table View)中,选择任何一个含有一个定位器做参数的命令。点击Find按钮,再看看测试的页面:应该会有一个浅绿色的长方形框出那个定位器的的页面元素。
利用页面源代码进行调试
通常你在调试一个测试用例的时候,你都需要查看页面的源代码去定位一些问题。通过右键点击页面,选择View Page Source(查看页面源代码),就可以查看到源代码了。
如果需要查看一部分的源代码,可以首先选择需要查看代码的页面元素,然后右键点击,并选择View Selection Source(查看选中源代码)。
Ps:用firebug会方便很多。
定位器帮助
当使用Selenium-IDE录制的时候,遇到定位器的参数的时候,IDE会保存一些额外的信息,这些额外的信息,可以让你选择不同类型的定位器。
定位器帮助信息会在命令面板中的Target字段,以下拉框的形式出现。如下图:
编写一个测试套件
测试套件是测试用例的集合,它会展示在最左侧的面板中。
一个测试套件是保存在一个HTML文件中,里面有一个一列的表格。每一个单元格包含一个测试用例的链接。下面就是一个包含4个测试用例的测试套件例子。
Sample Selenium Test Suite
Test Cases for De Anza A-Z Directory Links
A Links
B Links
C Links
D Links
用户扩展
用户扩展是一些可以完成个性化或者增强功能的JavaScript文件。尽管扩展没有什么限制,但是通常是一些自定义的命令。
下面有一些有用的扩展
最有名的goto_sel_ide.js了,它可以让Selenium-IDE支持流程控制(循环和分支的的流程)。可以通过查看这个插件的主页的说明使用
[ps:这个插件的主页被墙了…]
如何安装扩展?
选择Selenium-IDE菜单:Options -> Options -> General
在Selenium Core extensions这里选择插件的js文件就可以了,然后你必须重新打开Selenium-IDE,来让这个扩展生效。如果你对扩展进行了任何的修改,都需要重新打开Selenium-IDE。
如何编写属于自己的扩展?
你可以在Reference文档的靠下面的部分找到。
格式
Options菜单下面的Format菜单,可以让你选择一种测试用例保存和显示的语言。默认是HTML。
如果你使用Selenium-RC来运行你的测试用例,那么这个功能可以帮助转换你的测试用例到编程语言。
在不同的浏览器中执行测试
Selenium-IDE只可以在Firefox中运行。通过Selenium-RC,可以让这些测试用例在不同浏览器中运行。详细请见Selenium-RC的说明。
Troubleshooting
下面是一些Selenium-IDE经常遇到的问题。
1. Table view is not available with this format.
表格视图在这种格式下不可使用。
这个信息会在Selenium-IDE开启时打开表格视图时偶尔出现。解决的方法是关闭Selenium-IDE,并重新打开。
2. error loading test case: no command found
你使用了File -> Open 打开了一个测试套件(Test suite)文件。使用 File -> Open Test Suite打开测试套件,File -> Open 只可以打开测试用例。
3.
这 个错误信息是在Log中显示的,页面中找不到这个定位器(xpath=id(‘mainContent’)/h2)的元素。这有可能是在页面没有完全加载 完就执行了这条命令。尝试在这条命令前面添加‘pause 5000’ 这条暂停的命令,如果这样能够解决这个问题,那么你可以尝试使用waitFor* 和 *AndWait 命令。
4.
当你尝试使用store保存变量,但是怎么都保存不了。那么有可能是store命令的参数位置有问题。例如上图中,store命令的两个参数是搞反了。
store(值,变量名)
5.
error loading test case: [Exception... “Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIFileInputStream.init]” nresult: “0x80520012 (NS_ERROR_FILE_NOT_FOUND)” location: “JS frame :: chrome://selenium-ide/content/file-utils.js :: anonymous :: line 48” data: no]
测试套件中的测试用例找不到了。检查一下测试套件中测试用例的文件路径是否正确。
6.
如上图提示click命令找不到。Selenium-IDE是对空格敏感的,也就是不忽略空格。一条命令前或者后如果多了空格,那么IDE都会提示找不到这条命令的。
7.
找不到while命令,Selenium本身没有while这个命令,那么可能是这个测试用例中使用了扩展的命令。请确保扩展已经在选项菜单中添加了,并重新启动了Selenium-IDE。
8.
这 里的错误是说两句话不一致。从log里面提示的信息看到。两句话貌似是一致的。其实verifyTitle命令中的那句话 ‘Selenium’ 和‘web’这两个单词中间是有两个空格的…IDE在现实log的时候会把多个空格合并成一个空格,所以在log里面显示的完全一致的。但实际上是不一致 的。