自动化测试是测试领域不可缺少的一部分,至少我是这么认为,以前也多多少少接触过一些自动化相关知识,不过都没有实际操作和练习过,最近一个月接触到RobotFramework,并且采用了这个用python编写的功能自动化测试框架来测试我们公司系统,接下来就是学习过程中的一些笔记,若有错误的地方还请提出,谢谢! 1:首先简短介绍下RobotFramework这个东西到底是什么 RobotFramework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。RobotFramework是开源软件,由NokiaSiemensNetworks开发并提供支持。 2:RobotFramework具有那些特性 1。测试用例使用文本文件(TXT或者TSV文件)保存,使用制表符分隔数据。可以方便的使用任何文本编辑器,或者EXCEL编辑测试用例。也可以使用HTML格式创建用例。 2。测试用例中支持变量使用,可以使用IF语句和FOR循环语句。 3。可以利用标签功能对测试用例进行分类和有选择执行。 4。支持关键字驱动、数据驱动和行为驱动。 5。利用已有的关键字,测试人员可以创建自己需要的关键字,形成更高级别的行为。 6。测试执行报告和日志是HTML格式,容易阅读。 7。RobotFramework并不是一款像QTP一样的自动化测试工具。它是一个自动化测试框架,或者说是一个自动化测试平台。 8。提供了测试执行事件的监听接口,并且可以自定义接口中的脚本。例如,某个用例执行前,starttest接口中的脚本就会被执行;用例执行结束后,endtest接口中的脚本就会被执行。而测试人员可以自定义starttest、endtest这两个接口的脚本。 9。提供了命令行接口和XML格式的输出。可以与版本管理工具结合,进行持续集成。 10。RobotFramework是通过测试库识别被对象、操纵被测对象,有很多自带的或者第三方的开源测试库 例如:使用selenium2Library库测试web客户端。此外还可以测试java客户端、Win32客户端、SSH协议的字符终端等。 11。测试人员可以使用Python和java创建自己需要的测试库。 12。提供了远程测试执行接口,可以进行分布式测试执行。 3:编写脚本工具RIDE RIDE是一款专门用来编辑RobotFramework用例的软件,用Python编写并且开源。RIDE可以从RobotFramework官网找到最新的下载链接。(具体安装过程和用法会在后面的文章给出),其实还有其他的编写工具,这里只是笔者用的RIDE编写,看个人爱好。4:Keywords参考库 RobotFramework有很多可以参考的库,但是我只是用到了BuiltIn和Selenium2Library,里面提供了写脚本的一些关键字,但是WaitUntilElementIsVisible这个关键字用不了,原因我也不知道为什么。 5:RobotFramework关键字(因时间有限,我会一点一点的累加的,另外我是用Xpath写的脚本) openbrowserurl,browserfirefox,aliasNone,remoteurlFalse,desiredcapabilitiesNone,ffprofiledirNone 打开浏览器url表示你需要打开的网页地址browser表示你用什么浏览器打开这个网页后面的内容可以为空,所以忽略。 SetBrowserImplicitWaitseconds 设置浏览器等待时间(单位为秒)seconds表示浏览器等待的时间 inputtextlocator,text 向文本框输入值locator表示定位器text表示您要输入的文本内容 ClickButtonlocator 单击按钮时间locator表示定位器 ClickLinklocator 单击A标签locator表示定位器 ClickElementlocator 单击某个标签locator表示定位器 Elementshouldcontainexpected,message 验证元素被定位器包含文本预期expected表示期望值的locatorMessage表示你想要的消息 这个例子是说明了用户名和密码为空的情况下是否有提示‘用户不存在’ CloseAllBrowsers 关闭所有浏览器 unselectframe 集前帧与当前帧(回到顶部的frame,避免frame找不到元素,所以从最顶部的grame开始定位,特别是大模块之间的定位) Selectframelocator 设置feame被定位为当前你要定位的framelocator表示定位器(关键属性为帧id和名称) SelectFromListByValuelocator,values 从列表中选择值locator表示定位器values表示您要定位的值 SelectFromListBylabellocator,lable 从列表中选择你要的定位的标签locator表示定位器lable表示您要定位的标签 (lable可以是多个值) WaitUntilKeywordSucceedstimeout,retryinterval,name,args 等到指定的关键字成功或给定的超时过期。timeout表示超时retryinterval表示重新操作的间隔时间name表示要等待的关键字名称args表示所需等待加载的locator ElementShouldBeVisiblelocatormessage 验证元素是被定位器可见的locator表示定位器message可忽略 注:继上一步快速添加后等待10sec(秒)间隔时间为0sec,然后验证元素是否被定位器可见,这样就能解决浏览器快速切换模块导致页面加载找不到当前元素的情况了。 DragAndDropByOffsetsource,xoffset,yoffset 用于拖拽的按钮source表示我的元素xoffset表示横向偏移量yoffset表示纵向偏移量 SetSeleniumSpeedseconds 设置操作脚本等待时间seconds等待时间值,单位秒 注:这个Keyword一旦操作,后面的每个脚本执行的步骤都会等待0。3秒。 choosefilelocator,filepath 查看文件定位器路径 例:ChooseFilelogo1{logoFilePath} RunKeywordAndReturnStatusnameargs 运行关键字,并返回一个状态(true、false)args自定义变量 TableColumnShouldContaintablelocator,col,expected,loglevelINFO 列表应该包含,通常用来查找某个字符tablelocator列表定位器col表示列expected预期值loglevel表示日志,级别 ElementShouldBeVisiblelocator,message 表示元素应该可见,用来定位元素的,和click有本质的区别,首先是要可见的,返回true和false,如果为false的话就说明是不可用的element,而clickelement是一个点击的动作locator表示定位器message表示返回的一个消息,这个消息可以用来覆盖一个默认的错误消息,也可为空。 shouldbetruecondition,msgNone 表示返回一个状态true和falsecondition表示一个条件,状态,消息,用来覆盖默认的消息