声明:大家好,欢迎阅读我写的关于Robot Framework的文章。这里面有几个实例供大家学习和交流。我把每一步都配上了截图,而且争取把截图做的很清楚。不过截图中的文字或代码有时候实在会很小,有些朋友可能看不清楚,没关系,文章主要是介绍思路。文章的源代码可以在百度网盘上下载:
http://pan.baidu.com/s/1hrGsQ7y
Robot Framework练习源代码 -> 第1个测试用例:网站登录
正文:
Robot Framework环境搭建好后就可以开始写第一个测试用例了。我们用一个相对简单的功能-登录功能来开始,大家感受一下RF的实际操作。
启动RIDE,点击File -> New Project,对话框弹出来,给工程起个名字– MyFirstTestCase。对话框的下方可以选择工程的位置,右边的两个选项可以选择类型和格式。选择文件(file),咱们这个工程就一个测试用例,就只有一个文件(file),就不用新建文件夹了(directory),文件夹是用来管理多个测试用例的。RF提供了四种文件格式,先不管它,咱们选择HTML。
点击确定按钮,MyFirstTestCase这个工程就建好了,编辑页面也会自动打开。编辑页面上有三个选项卡,分别是Edit,TextEdit,Run。RF重要的特征之一就是把自动化测试所需要的代码转换成了文字,在Edit里我们可以敲入RF支持的语句,就好像一个个命令一样,背后其实就是自动化测试代码,就是函数或方法。命令/关键字/函数/方法我以后会统称为语句。这些语句全都可以在RF的帮助文档中查到。TextEdit显示文件样式和语句代码,一会儿我们写测试用例时就会体会到。我一般是在Edit里写,然后再用TextEdit快速查询关键字。Run显示运行时的状态和步骤,以及测试结果pass或fail。Edit选项卡下有个settings按钮,负责测试用例的配置。点击settings可以看到详细的配置信息:
Documentation:用来写测试用例的简介和目标,告诉别人你要测什么;
Setup:这个地方设置的步骤在运行测试用例前先被执行。比如你想在运行前把所有无关网页都关闭,那就可以把关闭网页这步加到这里;
Teardown:和Setup相反,这步是在测试用例运行完之后被执行;
Tags:标签,可以用来标注测试用例的版本,级别,模块等相关信息;
Template:模板,有时候测试用例可以被制作成模板方便用在别的测试用例里。
以上这些配置信息我们以后都会慢慢讨论到,不理解的朋友不要着急。
最下面是引文件区,我们可以把需要的资源文件引到这里面来。其实就是写代码时写在文件头部的那些import语句们。
我们要让Robot Framework做Selenium2做的事情,那当然这里要引的包是selenium2Library。点击Library,填上“Selenium2Library”。注意,这里很容易点击Resource,那就错了。Selenium2Library是类库,要用Library。引包的概念其实相当于程序开头的import...那些东西。
登录功能是很多网站的基础,还是万年不变的那几个步骤:
1.打开浏览器,输入网址;
2.点击登录按钮;
3.输入用户名;
4.输入密码;
5.确认;
6.验证登录是否成功。
我们测试的网站是http://www.xiaocesuo.net,对,小ce所,但此ce所非彼ce所。测试之前咱们先浏览一下页面。这是我自己搭的一个测试网站,以后我们的测试用例都会在这个网站演示。我们使用的测试用户名是xcs@126.com,密码是password。大家可以登陆一下,先简单看看咱们这个网站。这个网站不光是用来举例子的,以后我也会把写的一些东西上传到网站上,欢迎大家随时光临。
言归正传,我们现在就用RF来写登录功能。右键点击MyFirstTestCase –> NewTest Case新建测试用例,起名TCLOG-1。细心的人会发现TCLOG-1和MyFirstTestCase的面板很相似。不一样的是前者Edit选项卡最下面有很多网格,它们是为写测试步骤准备的。
下图是我写完的test case,请对照图看下面讲解:
第一步,打开浏览器。对应的语句是Open Browser,把它写入第一行第一列网格。字体变成绿色证明输入正确,以后我们还会看到别的颜色,比如红色代表Comments,紫色代表可能有错误,需要检查语法或是看看是不是某些包没有引进来。当然有时候紫色也不是错误,以后会讨论到。如果没记全方法可以按住Ctrl+Space起到辅助提示的作用。按该组合键还会提示该方法所需要的参数,Open Browser可以最多放6个参数,但实际情况中不一定每个都用上,比如咱们这个例子里用两个就可以了:url和browser。url代表网址,browser代表浏览器。这两个参数指明了用哪种浏览器打开哪个网站。参数写在同一行,在第二列填http://www.xiaocesuo.net,第三列填chrome。然后我们可以用一个Maximize Browser Window使网页最大化。
第二步,点击登录按钮。在第3行第一列输入ClickElement,该语句代表鼠标点击控件,在咱们这个例子里只需要一个参数,就是控件位置。如果该控件在html里是用创建的,则应该把Click Element改成Click Button。第二列输入控件的xpath,id=comp-irwyaylmactionTitle。手动写代码的时候我们经常会写Wait关键字来给网页加载或跳转这个动作留出时间,这里也一样,在第4行写个sleep,然后给个5秒就可以了。由于默认打开的是注册页面,我们需要再点击“Login”链接转到登录页面,所有我们在第5行写ClickElement,登录的xpath是id=signUpDialogswitchDialogLink。
第三步,输入用户名。在第7行第一列网格写Input Text,该语句代表输入可见文本,这一步需要两个参数–控件位置和值。第二列写//label[contains(text(),'Email')]/following-sibling::input,第三列写xcs@126.com。这里的xcs@126.com是个字符串,但我们不需要加引号,系统自动默认。//label[contains(text(),'Email')]/following-sibling::input是该控件的xpath,这句话意思是把xcs@126.com写到//label[contains(text(),'Email')]/following-sibling::input的文本框中。
第四步,输入密码。和第三步一样,只不过输入的是不可见文本–密码,所以第8行第一列写Input Password。这一步同样需要相同的两个参数。第二列写//label[contains(text(),'Password')]/following-sibling::input,第三列写password。
第五步,确认。确认按钮对应的xpath是id=memberLoginDialogoklink。在第9行第一列输入Click Element,第二列输入id=memberLoginDialogoklink。
最后一步,验证登陆是否成功。理论上讲,如果用户名和密码匹配,点击登录按钮就应该跳转网页。和自动化测试的验证方式一样,我们也是选择那些只显示在登录成功后的页面上的控件来验证。在这个例子中,很显然退出按钮在登录页面上没有,那我们可以把它当成关键控件,检测是否存在,如果存在,证明跳转成功,反之则失败。在第五行第一列写Page Should Contain,这三个英文单词代表网页是否包含的意思,按住Ctrl+Space打开辅助可以看到有很多和Page Should Contain相关的语句,如下图:比如Page Should Contain Element代表是否包含元素;Page Should Contain Button代表是否包含按钮;Page Should Contain Image代表是否包含图片;Page Should Contain Link代表是否包含链接;Page Should Contain后面不加任何东西代表是否包含文字。退出按钮是个Element,我们使用Page Should Contain Element。这个语句需要一个文字参数,第二列写“id=comp-irwyaylmactionTitle”,代表退出按钮Logout的位置。
可以再添一步,让程序在运行结束后关闭当前浏览器。对应的语句是Close Browser。如果要是关闭所有浏览器就是Close All Browsers。
步骤都写完了,我们点击Start按钮开始跑case,网页加载,自动输入用户名密码,自动点击按钮,和以前写自动化测试代码的效果差不多。
网页关闭后测试状态自动显示在Run选项卡下:
这里面有两个面板,上方显示测试通过与否,test case成功和失败的数量,并配以日志(log)和报告(report)。在咱们的例子中报告被存储在c:\users\marcoc\appdata\local\temp\RIDEsqevty.d\report.html。把它复制粘贴在浏览器里按回车,可以得到完整的报告:
Report很重要,尤其当代码出现错误时,它可以帮助我们修bug。写到这里肯定有不少人看出来了,说这不就是把自动化代码变成文字了吗?没错,这就是Robot Framework省事的地方。如果要是写代码,用java就是这个样子:
你看,几乎都是对应的,只不过所有的代码都用语句代替了。
网友评论
感谢笔者的分享😀😀
按照文中一步一步进行,除了在“验证登录是否成功”那一步遇到问题(提示11行第2列有语法错误)外,都能RUN pass。期待您的回复。😀