多余的不说,本文是自己实践过程中收集的关于使用Robot Framework + Selenium2Library 设计页面自动化用例的一些技巧。不一定放任四海皆准,至少可以作为参考。后续会持续更新。关于如何用Selenium IDE辅助选择元素,请参考上一篇博客: http://blog.csdn.net/it_blog/article/details/38168835。
技巧1: 让Web页面自动滚动到底部
背景:有些Web页面的元素很多,一个屏幕可能展示不下,特别是些保存,取消,提交等等按钮会被放置在底部。而Selenium2Library只能对看的见的元素做选择,然后操作。所以,常常需要在页面做了些特定配置后,滚动到页面底部提交,或者把页面先滚动到底部,让一些配置项能看的见后,再做配置。
方法:使用Selenium2Library的关键字“Execute Javascript”.
Execute Javascript document.documentElement.scrollTop=10000
10000,这个值可以尽量大,页面到滚不动就不滚了。
技巧2: 多frame的页面内的元素操作
背景:基本上现在的页面都会有多个frame组成,每个frame内的元素互相独立,Selenium web driver默认只对当前frame操作,所以,要先进入特定的frame,再对里面的元素做操作。
方法:使用关键字“Select Frame locator” 去进入一个frame,然后操作元素。
技巧3:在各frame之间切换
背景:当一个页面包含多个frame (iframe),且这些frame直接可能有嵌套的时候,对一个frame里的元素操作完后,想操作另外一个frame里的元素,就需要先做一个切换,否则Selenium web driver找不到。
方法:使用关键字“Unselect Frame” 退出一个frame.
技巧4:操作Windows弹出对话框里的元素
背景:经常会看到一些提交,或者校验操作会弹出一个Windows对话框让用户确认。这个对话框里面的元素也需要操作,才能完成一个场景测试。
方法:用关键字“Select Window title=xxxx”来把焦点移到弹出对话框里,然后对对话框里的元素做操作。
当弹出对话框消失后,要记得再执行一次“Select Window”, 不加locator,以回到原来的主页面。
技巧5:近似精确的等待页面操作结果生效。
背景:当某个页面配置操作提交后,可能需要确保后台的业务逻辑完成,才能进行接下来的操作,如何能确保后台业务逻辑已经完成?等待页面出现某个特定字符串出现,是个方法。但是,如果页面设计者为了提高用户体验,让页面先返回,后台稍稍慢慢点做呢?有人说可以“sleep”嘛。恩,没错,那要睡多久呢?如果满篇都是睡,用例要多久能跑完?等不起啊。
方法:Robot framework有个关键语法“FOR IN RANGE....Exit For Loop”, 加上关键字 “Run Keyword if”可以实现近似精确的等待。
: FOR ${index} IN RANGE 200
\ /*获取某个值,并附给某个变量*/
\ Run Keyword if /*这个变量满足某个条件*/ Exit For Loop
\ sleep x