"Robot Framework入门笔记”系列之七 -
声明:大家好,欢迎阅读我写的关于Robot Framework的文章。这里面有几个实例供大家学习和交流。我把每一步都配上了截图,而且争取把截图做的很清楚。不过截图中的文字或代码有时候实在会很小,有些朋友可能看不清楚,没关系,文章主要是介绍思路。文章的源代码可以在百度网盘上下载:
http://pan.baidu.com/s/1hrGsQ7y
Robot Framework练习源代码 ->第1个测试用例改进5:项目结构2
正文:
打开Pages ->Login.html -> Login toxiaocesuo函数,第4步,第6步和第10步都是等待5秒钟。现在老板来了,说你急啥,5秒钟太短了,你让它等最少10秒。好,那你就得把所有5改成10。如果你有很多文件很多函数呢?一个一个改明显不现实,更何况如果我们要改的不是一个,什么用户名密码浏览器都要改的话那工作量可就嗨了去了,估计改完了也该下班回家了。要是能声明一个变量就好了,这样只改变变量的值不就成了么?之前我们为函数声明过参数,同样,我们也可以用Python定义的方法来声明变量。
和函数一样,变量也是可以声明在资源文件下,然后由文件夹统一管理。右键点击RF -> New Directory,新建一个文件夹叫ObjRepository。右键点击文件夹ObjRepository-> New Resource创建个也叫Login.html的资源文件。注意,现在我们有两个叫Login.html的资源文件,一个是Pages下的,负责管理登录模块所需要的函数,一个是ObjRepository下的,负责管理登录模块所需要的变量,请注意区分一下。
图7-1Login to xiaocesuo函数中和登录模块相关的变量包括这么几个:
登录链接1(第3行);
登录链接2(第5行);
用户名文本框(第7行);
密码文本框(第8行);
登录确认按钮(第9行);
退出按钮(第11行)。
总共6个,咱给它们一个个创建变量。以第3行的登录链接1举例,如图7-1,右键点击ObjRepository -> Login.html-> New Scalar,Scalar代表变量或是参数。输入${locLoginLink1}作为名字,然后把函数login to xiaocesuo里面对应的xpath拷贝过来作为值。为变量起名字时最好能有提示的作用,比如我用前缀“loc”代表该变量存储的值是一个xpath。
图7-2因为该变量是要用在函数中的,所以在pages的login.html里引包:
图7-3最后在login to xiaocesuo中用变量名代替原有的xpath:
图7-4当然,如果按住ctrl+space组合键该变量名也会出现。所以千万不要忘记引包,不引包就不可见。用相同方法创建剩余的5个变量:${locLoginLink2},${locUserName},${locUserPassword},${locLoginConfirm},${locLogout},并且代替原有的xpath,如图7-5和7-6:
图7-5 图7-6举个例子,如果变量${locLoginLink1}的xpath有变化,我们可以直接在ObjRepository的相关资源文件中修改它就可以了,不用打开一个个test case或是keyword。这下是不是容易多了?
如图7-6,login to xiaocesuo里还有打开浏览器和等待这两个操作需要创建变量,这几个变量可以放在另一个资源文件中,毕竟也不是登录模块专属。右键ObjRepository -> New Resource,新建资源文件Environment.html,然后新建${ApplicationURL},${sBrowser}和${ShortWait}并把值包含进去,如图7-7:
图7-7这几个变量名都没有用“loc”作为前缀,因为它们只是简单的配置变量。在Pages -> Login.html中引入Environment.html,然后替换,最后如图7-8:
图7-8测试用例TCLOG-1里的文件路径前半部分C:/RF也可以用变量替换:
图7-9 图7-10运行测试通过。
图7-11