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

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

启动RIDE,点击File -> New Project, 对话框弹出来,给工程起个名字 – MyFirstTestCase。对话框的下方可以选择工程的位置,右边的两个选项可以选择类型和格式。选择文件(file),咱们这个工程就一个test case,就只有一个文件(file),就不用新建文件夹了(directory),文件夹是用来管理多个测试用例的。RF提供了四种文件格式,先不管它,咱们选择HTML。

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第1张图片

点击确定按钮,MyFirstTestCase这个项目就建好了,编辑页面也会自动打开。编辑页面上有三个选项卡,分别是Edit,TextEdit,Run。RF重要的特征之一就是关键字驱动,它把自动化测试所需要的代码转换成了关键字,在Edit里我们可以敲入RF支持的关键字,就好像一个个语句或指令一样,背后其实就是自动化测试代码。这些关键字全都可以在RF的帮助文档中查到。TextEdit显示文件样式和语句代码,一会儿我们写测试用例时就会体会到。我一般是在Edit里写,然后再用TextEdit快速查询。Run显示运行时的状态和步骤,以及测试结果pass或fail。Edit选项卡下有个settings按钮,负责测试用例的配置。点击settings可以看到详细的配置信息:

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

Documentation:用来写测试用例的简介和目标,告诉别人你要测什么;

Setup:这个地方设置的步骤在运行测试用例前先被执行。比如你想在运行前把所有无关网页都关闭,那就可以把关闭网页这步加到这里;

Teardown:和Setup相反,这步是在测试用例运行完之后被执行;

Tags:标签,可以用来标注测试用例的版本,级别,模块等相关信息;

Template:模板,有时候测试用例可以被制作成模板方便用在别的测试用例里。

以上这些配置信息我们以后会慢慢讨论到,不理解的朋友不要着急。最下面是引文件区,我们可以把需要的资源文件引到这里面来。其实就是写代码时写在文件头部的那些import语句们:

我们要让Robot Framework做Selenium2做的事情,那当然这里要引的包是selenium2library。点击Library,填上“Selenium2Library”。

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第3张图片

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

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

2. 输入用户名;

3. 输入密码;

4. 点击登录按钮;

5. 验证登录是否成功。

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

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第4张图片

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

先简单看看咱们这个网站。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选项卡最下面有很多网格,它们是为写测试步骤准备的。

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第5张图片

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

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第6张图片

第一步,打开浏览器并输入网址。对应的关键字是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填写格式如下:

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第7张图片

我们看到还可以用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相关的语句:

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第8张图片

比如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)。日志和报告的存储位置也显示出来了,把它复制粘贴在浏览器里按回车,可以得到完整的报告:

Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例_第9张图片

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

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

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

你可能感兴趣的:(Robot Framework + Selenium2Library自动化测试系列(2) - 网站登录示例)