Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例

Robot Framework环境搭建好后就可以开始写第一个test case了。我们用一个相对简单的功能 - 登录功能来开始,大家感受一下Robot Framework的实际操作。

启动RIDE,点击File -> New Project, 对话框弹出来,给工程起个名字 – MyFirstTestCase。对话框的下方可以选择工程的位置,右边的两个选项可以选择类型和格式。选择文件(file),咱们这个工程就一个test case,就只有一个文件(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”。

登录功能是很多网站的基础,还是万年不变的那几个步骤:

1. 打开浏览器,输入网址;

2. 输入用户名;

3. 输入密码;

4. 点击登录按钮;

5. 验证登录是否成功。

安装完成后浏览器访问http://cslm-test.com/selenium/hrsystem/index.php 这是我给大家专门搭的测试网站,以后我们的实验全都用这个网站。出现下面这个页面就算安装完成了:

从名字可以看出来,这个网站模拟的是一个人力资源系统,是我当时给一些歪果仁讲课时做的,所以是英文页面。不过里面的单词都很简单,对大家来说应该没什么难度。以后我们的测试用例都会在这个网站演示。

先简单看看咱们这个网站。Hrsystem是一个网站应用,打开后默认来到登录页面。登录页面上有员工代号,密码,登录按钮。我们可以用三个模拟员工登录:

1. 员工代号:1001,密码:123;

2. 员工代号:1002,密码:456;

3. 员工代号:1003,密码:789

随便选择一个登录进去直接跳转到主页(home)。主页上有一个员工头像以及一段欢迎辞。导航栏有四项,分别指向当前主页(home),员工信息(Employee),员工工时表(Timesheet),和一个虚拟的网上商城(OnlineStore)。当然

言归正传,我们现在就用RF来写登录功能。右键点击MyFirstTestCase–> New Test Case新建test case,起名TCLOG-1。细心的人会发现TCLOG-1和MyFirstTestCase的面板很相似。不一样的是前者Edit选项卡最下面有很多网格,它们是为写测试步骤准备的。

我先把写完的程序放上来,大家请对照图看下面讲解:

第一步,打开浏览器并输入网址。对应的关键字是Open Browser,把它写入第一行第一列网格。如果变成蓝色证明输入正确,以后我们还会看到别的颜色,比如绿色代表变量,红色代表Comments,紫色代表可能有错误。当然有时候紫色也不是错误,以后会讨论到。如果没记全方法可以按住Ctrl+Alt+Space起到辅助提示的作用。按该组合键还会提示该方法所需要的参数,Open Browser可以最多放6个参数,但实际情况中不一定每个都用上,比如咱们这个例子里用两个就可以了:url和browser。url代表网址,browser代表浏览器。这两个参数指明了用哪种浏览器打开哪个网站。参数写在同一行,因为我打算用chrome来测试,所以在第二列填http://cslm-test.com/selenium/hrsystem/index.php 第三列填chrome。注意,截图里写的是localhost,并不是cslm-test.com,因为我一开始写代码时还没买域名空间,你自己把它改过来就好,我就不换截图了。然后我们可以用一个Maximize Browser Window使网页最大化。

第二步,点击登录按钮。

第二步,输入用户名。在第3行第一列网格写Input Text,该语句代表输入可见文本,这一步需要两个参数 – 网页控件的位置和输入的值。这里的网页控件就是用户名文本框,它的位置可以用8种定位器来标识。定位器我们在selenium系列讲过了,不明白的朋友可以先去复习一下,我就不多说了。8种定位器对应的RF填写格式如下:

我们看到还可以用dom以及其它别的方式定位。不过对于这个员工代号textbox不用考虑太多,因为我发现这个控件有个id,当然就用id了。所以第二列写id=usercode,第三列写刚才提到的某一个员工代号,比如就1001吧。这里的1001是个字符串,但我们不需要加引号,系统自动默认。这句话意思是把1001写到id=usercode的文本框中。注意,和学selenium的时候一样,我们要注意查看API文档,Robot Framework使用selenium类库的对应文档就叫Selenium2Library,网址是http://robotframework.org/Selenium2Library/Selenium2Library.html 其实使用方法文档里都写了。

第三步,输入密码。和第二步一样,只不过输入的是不可见文本 – 密码,所以第4行第一列写Input Password。这一步同样需要相同的两个参数。第二列写id=password,第三列写123。

第四步,点击登录按钮。在第5行第一列输入Click Element,该语句代表鼠标点击网页元素,只需要一个参数,就是控件位置。如果该控件在html里是用创建的,则可以把Click Element改成Click Button。我是用css来定位登录按钮的,css=.btn-primary。第二列输入css=.btn-primary。手动写代码的时候我们经常写Thread.sleep()这样类似的代码给网页加载或跳转等动作留出时间,这里也一样,在第4行写个sleep,然后给个5秒就可以了。

最后一步,验证登陆是否成功。理论上讲,如果用户名和密码匹配,点击登录按钮就应该跳转网页。和自动化测试的验证方式一样,我们也是选择那些只显示在登录成功后的页面上的控件来验证。在这个例子中,很显然很多控件在登录页面上都没有,我就随便挑一个,就导航栏上的Home按钮吧,我们把它当成关键控件,检测是否存在,如果存在,证明跳转成功,反之则失败。在第七行第一列写Page Should Contain,这三个英文单词代表“网页是否包含”的意思。按住Ctrl+Alt+Space打开辅助可以看到有很多和Page Should Contain相关的语句:

比如Page Should Contain Element代表是否包含元素;Page Should Contain Button代表是否包含按钮;Page Should Contain Image代表是否包含图片;Page Should Contain Link代表是否包含链接等等。Home键是个Element,我们使用Page Should Contain Element。这个语句需要一个文字参数,第二列我用了xpath定位Home,xpath=//ul/li[1]/a。


可以再添一步,让程序在运行结束后关闭当前浏览器。对应的语句是Close Browser。如果要是关闭所有浏览器就是Close All Browsers。

步骤都写完了,我们点击Start按钮开始跑case,网页加载,自动输入用户名密码,自动点击按钮,和以前写自动化测试代码的效果差不多。网页关闭后测试状态自动显示在Run选项卡下。这里面有两个面板,上方显示测试通过与否,test case成功和失败的数量,并配以日志 (log)和报告 (report)。日志和报告的存储位置也显示出来了,把它复制粘贴在浏览器里按回车,可以得到完整的报告:

Report很重要,尤其当代码出现错误时,它可以帮助我们debug。

写到这里肯定有不少人看出来了,说这不就是把自动化代码变成关键字了吗?没错,这就是Robot Framework省事的地方,每一行蓝色的关键字都是Selenium2Library类库中的方法,关键字后面的字段就是方法要接受的实参。如果你会用这些关键字,那你就可以不用考虑某一种编程语言的语法啦!

这篇文章的源代码在[Test1](https://github.com/cslm/cslm.robotframework/tree/master/Test1)中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容