robotframework的安装及使用(二)

安装请看我发布的第一篇:robotframework安装及使用(一)_小小大大q的博客-CSDN博客

安装完了就开始使用了,本篇文章介绍对web端浏览器的操作

有错误的地方欢迎各位大佬指点,谢谢

一、关键字

1、常用关键字

Selenium2Library库里的关键字太多了,就简单介绍一下我常用的关键字,都可以在RIDE中按F5查询出来

①浏览器操作

Open Browser(打开浏览器):打开浏览器,可以使用2个变量测试地址和测试使用的浏览器

Maximize Browser Window(浏览器最大化):无需参数,RF打开浏览器不是最大化的,所以要使用该关键字把浏览器最大化,通常和打开浏览器配合使用

Close Browser/Close All Browsers(关闭浏览器/关闭所有浏览器):自动关闭浏览器,无需参数

②输入框输入内容

Input Text(输入文本):2个参数,输入框元素定位位置和输入内容

③点击操作

Click Element(点击元素):1个参数,所点击元素的位置,万金油,基本上所有的点击操作都可以使用该关键字;

Click Button(点击按钮):可以点击按钮(有限制),建议可以稍微学习一下前端,<button></button>标签可以使用,非button标签不能使用,要使用其他点击方式,button是前端html中标准的按钮标签,但是还有“伪”按钮,用其他标签(例如div,span,input)等通过css调整显示为按钮的样式,就不能使用该关键字了;

button标签按钮

 非button标签按钮,例如百度一下

Click Link(点击链接):所定位的标签中存在链接的可以使用该关键字,像类似如下面的这种,参数我们有时候可以输入链接位置的汉字(我喜欢用汉字参数,方便,当然有时候不行的时候就试试其他定位方式,方法很多,个人怎么习惯怎么用)

<a href="https://pro.fanyi.so.com/quic?src=fanyiweb&amp;from=22&amp;to=21&amp;cont=Alert" target="_blank" class="human-translate">人工翻译</a>

Click Image(点击图片):点击位置存在图片

④框架

Select Frame(选择框架):这个很重要,对前端页面了解的应该知道,一个页面可能包含很多层框架,那我们选择框架就要一层一层选,先选最外层,例如操作下方的保存按钮

<iframe  id="iframe1" scrolling="no">
  <div>
   ......
    <iframe id="btn">
      <body>
        <div>
          <button>保存</button>
        </div>
      </body>
    </iframe>
    <iframe id="sel">
      <body>
        <div>
          <button>查询</button>
        </div>
      </body>
    </iframe>
  </div>
</iframe>

操作步骤

 Unselect Frame(退出框架):退出框架是无需参数的,而且会退出到最外层,例如上面的前端代码,先操作保存,再操作查询按钮

⑤浏览器选项卡(窗口)

Select Window(选择窗口):选择窗口,参数为title文字就行,有的跳转链接不是覆盖型页面,而是打开浏览器新页面,这个时候就需要用到这个关键字来选择新页面窗口

⑥检查页面

Element Text Should Be(元素文本应该是):检查对应位置是否为指定文本内容,2个参数,位置和检查内容

Page Should Contain(页面应该包含文本):验证当前页面应该包含文本,1个参数,文本内容,当然这个校验必须保证当前页面需要检查的文本内容是唯一的,要不然就失去了校验的意义

Page Should Not Contain(页面不应包含文本):验证当前页面不应该包含文本,1个参数,文本那日,也要唯一,通常应用于检查删除后的内容还在不在

⑦键盘操作

Press Key(按键):代替键盘操作,可以输入字符串,也可以当做特殊键使用,例如回车键,

2个参数,回车键的位置和回车键的编码(\\13)

Press Keys(按键,selenium2Library 4.0版本):该版本特殊键就不是编码了,例如回车为位置+RETURN,详细用法可以查看对应版本的介绍

⑧上传附件

Choose File(上传附件):2个参数,上传附件按钮的位置(也就是弹出选择文件的那个操作)和文件路径D:\\360Downloads\\Software\\test.txt,绝对路径,相对路径我试了好像有问题,有大佬可以指点一下吗

⑨获取

Get Text(获取文本):获取指定位置的文本内容,1个参数,位置参数

Get Value(获取值):获取前端代码里面的value值,例如input标签里面输入的内容

⑩设置变量

方法一:

Set Variable(设置用例变量):把XX设置为${Variable},该变量在当前用例下可以使用,例如查询,范围如下图红框所示

Set Suite Variable(设置套件变量):把XX设置为${SuiteVariable},该变量在当前套件下可以使用,例如跨用例查询,范围如红框所示

 Set Global Variable(设置全局变量):把XX设置为${GlobalVariable},该变量在当前项目下可以使用,范围如红框所示

 PS:以上方法设置的变量是在用例执行过程中设置的,当全部用例(选择一起执行的用例)都执行完毕后,设置的变量都回收了,不能分批次用(用例是可以重复执行的,例如执行了用例A和B,A中设置的全局变量在B中可以使用,但是AB执行完后,不能单独再去执行B,因为没有执行A的话,该全局变量就没有设置)

方法二

 通过右键创建普通变量、列表变量、字典变量,这种方式创建的变量可以直接引用,随便使用,但是变量的值是固定的或者某个范围内

二、元素定位

元素定位:定位的方法很多,一般保证一个条件就行,定位的元素唯一,列出几种我常用的方法

1、id定位:通常来说id是唯一的,但是有的页面可能存在动态id,就是id的值每次打开页面后都不一致,这种换其他方法定位就可以了

2、name定位:通过标签中的name=XXX定位

3、classname定位:可能不唯一,用的少

4、xpath定位:使用较多

单个属性://标签名[@属性名称=值]
多个属性://标签名[@属性名称=值 and/or @属性名称=值]
包       含://标签名[contains(@属性名称,“值")],例://a[contains(@href,"abc")]
文       本://标签名[text()=文本],例://a[text()='文本']
包含和文本同用://a[contains(text(),'文本')]

以XX开始://div[starts-with(@id,"XX")]

以XX结束://div[ends-with(@id,"XX")]

PS:xpath路径中可以使用变量传入参数,例如//div[@id="${locator}"]/div/span/div[${index}],${locator}传入id参数,${index}传入索引参数,在后面会详细讲一下

三、封装

robotframework的核心就在于封装,封装关键字可以大大提高我们的效率,而且也可以使我们的自动化脚本更方便阅读

1、不封装的情况

比如我们去百度查询robotframework,操作步骤:

1、打开浏览器并输入百度地址;

2、浏览器最大化;

3、定位到百度输入框,输入robotframework;

4、点击百度一下

 这样一看不方便阅读,且英文容易输错,我们可以把英文关键字封装成中文

2、封装的情况

首先新增一个resource

 

 然后在resource中新增关键字

 

 

1、有变量需要传参数的关键字

 

 2、无需传递参数的关键字

效果 :

当然封装的关键字要导入到测试套件里面,这样才会生效,而且汉字也不能输错

 

 

3、封装组合关键字

1、把重复的步骤封装成一个,测试用例里面的内容就没有那么臃肿,这里有一种分层的概念,最底层就是selenium库里的关键字了,第二层就是封装的关键字,第三层就是用例了,如果百度一下按钮的id属性变了,我们只需要修改封装的百度搜索关键字里面的信息就行,测试用例(假如有100个用例都使用了该关键字)完全不用修改,用的百度搜索就是最新的

例如,如上图所示,完全可以把上述步骤封装为一个组合关键字,就叫百度搜索吧

当然组合关键字也是要导入到测试套件才能使用 

 

 效果

 

 PS:这样还有一个好处,现在很多公司都是平台化开发,开发出来的系统页面都是平台生成的,这样就造成很多页面的xpath路径层级相同,而xpath路径中我们是可以加变量传入参数的,例如上传附件,我之前测试的一个页面需要上传10个左右的必填附件,如果每个都自己写那会显得用例很臃肿,而且还花很多时间,因为xpath路径类似,我封装一个上传附件的组合关键字,相同的直接写死,不同的加一个变量,例如加一个索引变量,所以我只需要引入10个上传附件关键字,传入的参数1、2、3、4、5这样写方便多了

2、函数的封装

有些库里面没有的关键字,而我们又需要用的,就要考虑封装了,当然也可以直接写在用例中,但是这样不方便维护还容易写错,函数封装我们就要借用Evaluate关键字了

 关闭浏览器并杀进程:第一步关闭浏览器,第二步通过杀谷歌浏览器进程的函数杀掉进程

 为什么要杀进程呢?如上图所示,浏览器打开多了,进程不杀掉的话,后面的测试用例就算没问题也会执行不下去,所以我在每一个测试用例中都加了一个杀进程的关键字,但是我不是加在用例的最末行,因为如果测试用例有问题,就会结束执行,最末行根本不会执行杀进程的操作,我加在Teardown中,这里是不管测试用例执行是否成功,最后都会执行Teardown中的关键字

 还有输入当前日期的

3、 组合封装关键字

有些关键字单个不好封装,但是可以和其他关键字一起组合封装

 以上2个关键字单独都不好封装,但是放一起就可以了,例如业务是新增一个项目,可以把唯一属性(生成编码啥的)设置为变量,然后新增成功之后再去查询,检查是否新增成功,要注意的一点是关键字中是变量,测试用例中用来存这个全局变量也是一个变量,那就不能直接写${XXX},前面要加一个转义符“\”

四、测试策略

我认为最难的还是测试思路,作为测试人员,我们要想办法用自动化脚本尽可能覆盖全测试场景,尤其是一些特别复杂的业务系统,有时候有点无从下手的感觉,如果有思路了,再想办法去实现就稍微简单一些了,像一些基本一点的业务例如:

新增项目:那我们只需要新增一个项目,然后一系列操作后检查页面是否存在新增的项目

删除项目:删除后,检查页面是否还存在,甚至去链接数据库查询

自动化执行用例脚本是存在局限性的,例如执行10条用例,如果中间有错误、环境不稳定等问题导致某个用例执行失败,如果这10条用例中间的数据有关联,那么就会造成多条用例执行失败,怎么避免这些情况,都是需要考虑的

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值