`
lsjlym
  • 浏览: 21718 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Selenium用户指南 - 第三章 Selenium IDE[3]

 
阅读更多

Selenium 命令 - “Selenese”

Selenium命令,常被称为Selenese,是一套运行在你的测试中的命令。这些命令的一个序列是一个测试脚本。在此,我们将详细解释这些命令,并提供你许多选择,你可以在使用Selenium测试你的应用程序中使用。

Selenium提供了一套丰富的命令集,为了可以完全地,以你可以想象的任何方式测试你的Web应用程序。命令集常常被称为Selenese。这些命令在本质上创建了一种测试语言。

在Selenese,人们可以测试现存的UI元素,基于HML标记,可以测试指定的内容,测试中断的链接,输入域,选择列表选项,提交窗体,以及在其他内容之间的表格数据。此外Selenium命令支持测试窗口的大小,鼠标的位置,警告,Ajax功能,弹出窗口,事件处理,以及许多其他的Web应用程序特征。命令参考列出了所有可得到的命令。

一个命令就是告诉Selenium应作是么。Selenium命令可以分成三类:动作(Action),存取器(Accessor)和断言(Assertion)。

动作(Action)通常是操纵应用程序状态的命令。它们完成类似“点击链接”和“选择选项”的工作。如果一个动作(Action)失败,或者有一个错误,当前测试的执行将终止。

许多动作(Action)可以被调用带有“AndWait”后缀,例如“clickAndWait”。这个后缀告诉Selenium该动作将引起浏览器做出一个对服务器的调用,Selenium将等待一个新的页面被装载。

存取器(Accessor)检查应用程序的状态,并存储结果在变量中,诸如“storeTitle”。它们也被使用于自动生成断言。

断言(Assertion)类似于存取器,但它们验证应用程序的状态符合预期。示例包括“确信页面的标题是X”和“验证复选框被选中”。

所有的Selenium断言(Assertion)可以以三个方式进行使用:”assert“,”verify”和“waitFor”。例如你可以”assertText“,”verifyText“和”waitForText“。当一个”assert“失败时,测试被退出。当一个”verify“失败时,测试将继续执行,日志这个失败。这允许一个单一的”assert“来确保应用程序是在正确的页面上,跟着是一堆”verify“断言,进行窗体域值及标签等等的测试。

”waitFor“命令等待某些条件成真(可能对Ajax应用程序的测试是有用的)。它们将立即成功,如果条件已经为真。然而,它们将失败和停止测试,如果条件没有在目前的超时设置内成真(见后面的setTimeout动作)。

脚本语法



Selenium命令是简单的,它们由命令和两个参数组成,例如:

verifyText //div//a[2] Login

参数并不总是需要的;这依赖于命令。在某些情况下,需要两个参数,一个参数,或者根本就不带参数。这里是几个示例:

goBackAndWait
verifyTextPresent Welcome to My Home Page
type id=phone (555) 666-7066
type id=address1 ${myVariableAddress}

命令参考为每一个命令描述了参数的需求情况。

参数是多种多样的,然而它们典型的是:

识别页面中UI元素的定位器

验证或断言预期的页面内容的文本模式

用于在一个输入域键入文本或在一个选项列表选择一个选项的文本模式或Selenium变量

定位器,文本模式,Selenium变量,以及命令本身在Selenium命令章节有相当详细的描述。

从Selenium IDE运行的Selenium脚本以一个HTML文本文件的格式存储在一个文件中。它是由带有三列的一个HTML表格组成的。第一列标示Selenium命令,第二列是目标(Target),最后一列包含一个值(Value)。第二和第三列依赖于选择的Selenium命令可能不需要值,但它们必须被呈现。每一个表行代表一个新的Selenium命令。这是一个测试的示例,完成打开一个页。断言页的标题,然后验证页面上的某些内容:


open /download/
assertTitle Downloads
verifyText Downloads

在浏览器中绘制作一个表,看起来如下:

open /download/
assertTitle Downloads
verifyText //h2 Downloads

Selenese的HTML语法可以用于编写和运行测试,而无需编程语言的知识。只要具备基本的Selenese和Selenium IDE的知识,你就可以快速地创作和运行测试案例。

测试集

一个测试集是测试的集合。时常一个人会运行在一个测试集中的所有测试做一个连续的批作业。

当使用Selenium IDE时,测试集可以被定义使用一个单一的HTML文件。语法同样是简单的。一个HTML表格定义一个测试列表,每一行定义每一个测试的地文件系统路径。一个示例就可以说明一切:


<html>
<head>
<title>Test Suite Function Tests - Priority 1</title>
</head>
<body>
<table>
<tr><td><b>Suite Of Tests</b></td></tr>
<tr><td><a href="./Login.html">Login</a></td></tr>
<tr><td><a href="./SearchValues.html">Test Searching for Values</a></td></tr>
<tr><td><a href="./SaveValues.html">Test Save</a></td></tr>
</table>
</body>
</html>


一个类似于这个的文件就可以允许从Selenium IDE一次运行所有的测试。一个接着一个。

测试集也可以使用Selenium RC来维护。这可以通过编程来达到,同样可以以多种方式被完成。普通的单元测试可以被使用于维护一个测试集,如果一个人正在使用Selenium RC用Java。替代地名如果C#是选择的语言,也可以使用Nunit。如果使用一个解释性语言,像Python,使用Selenium RC可能需要在建立一个测试集时进行一些简单的编程工作。因为使用Selenium RC的全部理由就是可以充分利用编程的逻辑于你的测试,这通常不应该是一个问题。

常用的Selenium命令

总结一下我们的Selenium简介,我们向你展示了几个典型的Selenium命令。这些可能就是最常用的构造测试的命令。



open

使用URL打开一个页面。

click/clickAndWait

执行一个点击操作,可选的等待一个新的页面被装载。

verifyTitle/assertTitle

验证一个预期的页面标题。

verifyTextPresent

验证在页面某个地方的预期文本。

verifyElementPresent

验证由HTML标记定义的预期UI元素在页面上是否呈现。

verifyText

验证预期文本和它响应的HTML标记在页面上呈现。

verifyTable

验证一个表的预期内容。

waitForPageToLoad

暂停执行直到一个预期的新页面被装载。当clickAndWait被使用时将自动调用。

waitForElementPresent

暂停执行执导一个预期的右HTML标记定义的元素出现在页面上。

验证页面元素

验证一个页面上的UI元素可能是你的自动化测试最常用的功能。Selenese允许以多种方式检测UI元素。理解这些不同的方法是重要的,因为这写方法定义了你的实际测试内容。

例如,你将测试...

一个元素在页面的某个地方出现了么?

特定的文本在页面的某个地方出现了么?

特定的文本是在页面上的某个特定的位置么?

例如,如果你正在测试一个文本标题,这文本和它的在页面顶部的位置可能是与你的测试相关的。然而,如果你正在测试在一个主页面上一个图像的存在性,而且Web的设计者频繁地改变这个特定的图像文件,以及它在页面上的位置,那么你仅仅希望去测试一个图像(非特定的图像文件)在页面的某个地方。

断言或验证?

在“sssert”和“verify”之间的选择取决于失败的管理和便利性。当检查页面上的第一个段落是否正确几乎是不重要,即使你失败了,但浏览器正在显示一个正确的页面的时候。如果你没有在正确的页面,你可能希望推出你的测试案例,以便立即调查原因和快速地修复问题。另一方面,你可能希望检查一个页面的许多属性,而在首次失败是不退出测试,因为这将允许你查看在页面上的所有失败,并采取适当的行动。实际上一个“assert”将使测试失败并退出当前的测试案例,然而“verify”将使测试失败并继续运行测试案例。

这个特征的最佳使用方法是逻辑地分组你的测试命令,在每个分组的开始带有一个“assert”命令,跟着一个或多个“verify”测试命令。示例如下:

Command Target Value
open /download/
assertTitle Downloads
verifyText //h2 Downloads
assertTable 1.2.1 Selenium IDE
verifyTable 1.2.2 June 3, 2008
verifyTable 1.2.3 1.0 beta 2



上面的示例,首先打开一个页,然后通过比较页面的标题与预期的值“assert”正确的页面被装载。只要这个通过,后面的命令将运行并“verify”文本被呈现在预期的位置。测试案例然后“assert”第一个表的第二行的第一列包含预期的值,并且仅当这个通过了,再继续“verify”那一行的剩余的单元格。


verifyTextPresent

该命令用于验证特定的文本存在页面的某个地方。带有一个单一的参数 - 需要验证的文本模式。例如:

Command Target Value
verifyTextPresent Marketing Analysis

这将引发Selenium搜索,验证,文本串“Marketing Analysis”出现在正在验证的页面的某个地方。使用verifyTextPresent ,当你仅仅对文本本身出现在页面上感兴趣时。不要使用它,当你需要测试文本出现在页面的哪里时。


使用这个命令,当你测试一个特定的UI元素必须出现,而不是它的内容时。这个验证部检查文本,仅只HTML标记。一个常见的使用检查一个图像的呈现。

Command Target Value
verifyElementPresent //div/p/img

这个命令验证一个图像,使用一个<img>HTML标记,紧跟在<div>和<p>标记的后面。第一个(也是唯一的一个)参数是定位器,告诉Selenese命令如何找到这个元素。定位器被解释在下一节。

verifyElementPresent 可以被使用于在页面中检查任何HTML标记的存在性。你可以检查链接,段落,层等等的存在性。这儿是几个示例:

Command Target Value
verifyElementPresent //div/p
verifyElementPresent //div/a
verifyElementPresent id=Login
verifyElementPresent link=Go to Marketing Research
verifyElementPresent //a[2]
verifyElementPresent //head/title

这些示例演示了一个UI元素可以被测试的各种各样的方式。再次说明,定位器被解释在下一节。


verifyText

使用verifyText,当文本以及它的UI元素必须被测试时。verifyText必须使用一个定位器。如果你选择XPath或DOM定位器,你可以验证特定的文本出现在页面上,相对于其他UI组件的特定的位置。

Command Target Value
verifyText //table/tr/td/div/p This is my text and it occurs right after the div inside the table.

© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics