robot framework自动化测试实例(第三篇:动态获取坐标,动态等待,循环语句)

前言:

上一篇文章中我们讲解了:在第一次安装启动应用之后,跳过用户引导页进入首页。我们使用的是固定的等待sleep,和固定坐标的swipe语句,以及重复swipe语句达到翻页至最后一页。这一章我们讲:

  1.  等待引导页出现后开始互动操作
  2.  动态的获取屏幕内坐标,但是滑动
  3.  使用循环语句滑动页面直至最后一页

课程内容:

 首先我们上图我们今天这节的用例:

robot framework自动化测试实例(第三篇:动态获取坐标,动态等待,循环语句)

知识点讲解


  1. 第一行:上两节已经重点讲过,打开应用(如果未安装,就会自动安装之后打开应用)
  2. 第二行:Wait Until Element Is Visible(可以使用id,xpath,css或者name的值)关键字。这一句是指我们等待引导页出现,而怎么判断引导页出现呢?我们可以查看引导页上的元素(与开启启动图不一样的是,引导页中有个控件“跳过”),所以我们选择等待“跳过”按钮的出现,就代表进入了引导页。 备注:id就是UI Automator Viever中的resource-id;name就是指UI Automator Viever中text的值
  3. 引导页图片:robot framework自动化测试实例(第三篇:动态获取坐标,动态等待,循环语句)
  4. 第三、四行:接下来我们需要滑动切换引导页,先讲一下我们的思路,滑动需要获取滑动区域的坐标,我们滑动的区域毫无疑问是整张引导图内,我们可以使用 get element location获取引导页图片的左上角坐标(x与y值),使用get element size 获取引导页图片的大小(width和height值),我们用字典的方式存放返回的数据,这样我们就能使用dict的key值去访问数据了。通过计算你就能知道上图中四个角的坐标了。备注:我们用字典的方式存放返回的数据,这样我们就能使用dict的key值去访问数据了。我们可以手动的滑动看看,滑动至下一页,需要保证横向滑动的跨度比较大。
  5. 第五、六、七行,我们的值都是要通过数学运算得来的,所以我们要用到关键字:Evaluate(用法如第五、六、七行
  6. 第五行:我们的滑动时从右向左划,我们计算滑动开始的点的x坐标:&{loc}[x]+&{size}[width]-100(&{loc}[x]+&{size}[width]左上角的x的值加上width就是引导图最右侧的x值,再减去100是因为我们所有的滑动最好不要贴边去操作,都要偏移一点
  7. 第六行:计算滑动开始的点的y坐标-->(&{loc}[y]+&{size}[height])/2(我们选择了引导图上下中间的y值)
  8. 第七行:从右向左移动,我们选择临近最左侧线的点-->&{loc}[x]+100
  9. 引导页最后一页:robot framework自动化测试实例(第三篇:动态获取坐标,动态等待,循环语句)
  10. 第八、九、十、十一行:使用循环语句,思路是:滑动页面直到页面出现了控件“立即体验”(最后一页和所有的引导页不一样的地方在于,有控件“立即体验”,如上图)
  11. 第八行:for语句的使用,循环执行for下面语句的次数。(暂时没有想好怎么动态的去判断循环的次数,所以比较笨的选择循环10086次,大家有好的方法可以联系我。
  12. 第九行:判断页面是否存在控件“立即体验”,如果页面有此控件${i}返回字符串:PASS;如果页面没有此控件${i}返回字符串值:Fail,如下图:
  13. 第九行执行结果图:robot framework自动化测试实例(第三篇:动态获取坐标,动态等待,循环语句)
  14. 第十行:如果页面存在控件“立即体验”,则退出循环往下执行第十二行点击操作。(如果不满足条件,就往下执行for内部语句第十一行)
  15. 第十一行:从右向左滑动至下一个引导页
  16. 如何判断一个for语句结束?  for里面的语句第一列要置空
  17. 第十二行:点击控件“立即体验”,进入首页


备注:为什么我点击立即体验这个控件不适用click button呢?你们可以尝试一样将我的click element 改为click button,会报错,所以大部分我喜欢适用click element:


TypeError: exceptions must be old-style classes or derived from BaseException, not unicode