一切的开始
某天,发生着我们每个测试工程师都可能遇到的场景:
项目经理老王:小明,现在大家都在搞测试自动化,我们也用自动化的手段提高效率吧。
测试猿小明:好的。
测试猿小明:经理,我研究了下,结论是这样的:
自动化测试分为UI自动化和接口自动化。前者从UI发起,可以模拟用户在web上点击从而测试功能;后者从接口发起,能从接口层面确保接口功能。
一般来说,UI变化大,接口变动小,大部分的UI自动化都是保障基本功能,接口自动化保障服务提供能力。所以,一般不建议使用UI自动化测试各种异常场景,原因不是不能测,而是维护工作量太大。
最后,项目经理权衡各种利弊,决定使用UI先做基本功能的自动化,用来做回归测试和线上基本功能保障。
测试猿小明查看了大量资料,最终选择了Robot Framework+Selenium2Library的组合,原因如下:
小明只懂入门级python语言,而RFS对编程语言的要求基本为0。
RFS环境搭建好后,测试结果汇总,测试报告,测试log都是直接生成的网页版,方便进行结果分析和分发。
公司制作的网页没有使用比较难以定位的插件。
测试环境的搭建有2个方法:
(推荐方法)安装也能了解自己使用了什么工具和插件,安装链接:https://blog.csdn.net/ywyxb/article/details/64126927
完全安装好环境后,就可以在CMD窗口运行ride.py来启动ride编辑器了,启动后的主界面如下,我们先不看别的,右键点击project,创建个New Directory:
给文件夹起个名字,并且(推荐)使用默认的txt文件进行编辑:
右键选择你的文件夹,创建一个测试套件:
给测试套件起个名字,其它均使用默认值即可:
点击Library,导入Selenium2Library的包,引入后套件内均可使用其关键字:
引入成功后,可以按F5来查看引入类库包含的关键字:
Q:什么是关键字?
A:关键字是RF自动化的根本,可以理解为可以直接使用的封装好的函数。
右键点击我们创建好的测试套件,创建一条测试用例:
好了,前面都是准备工作,我们现在可以正式开始写自动化用例了:
Q:UI自动化用例第一步应该干什么?
A:当然是打开浏览器了。
在ride中按F5,打开Search Keywords的界面,搜索下open,很快能找到这个:
如果按照以上步骤,我们应该打开了一个谷歌浏览器,并打开了百度网站,那么如何让百度搜索我们想要的信息呢?
在RFS里,我们要操作的对象主要是一个个元素(Element),只要我们能通过一定的方式找到这些元素就可以。
RFS支持很多种对元素的定位方法,在这里,我根据经验推荐几种定位方法:
CSS:定位最为灵活,速度最快,学习好后能了解很多web相关知识,缺点是需要专门的学习,推荐使用。
jquery:作为css定位的补充使用。
Xpath:语法灵活,有不少插件可以直接找出xpath路径(虽然不是最合适路径),很多初学者喜欢使用,缺点是执行效率不高。
我们打开谷歌浏览器,并打开百度首页,按F12打开浏览器开发者工具:
我们来继续完善我们的第一条测试用例:
测试总要有个成功或者失败的条件,我们发现搜索后总会有这个:
我们可以根据搜索后出现的文本信息来判断是否搜索成功:
执行下,看看我们目前写的是否有问题,结果真的报错了:
把刚才的地址改成url的方式,就可以正常跑了:
但是还有个问题,我们跑完后,虽然测试用pass了,但是自动化打开的浏览器并没有关闭,由于关闭浏览器是每次全部测试用例测试完成后必须的动作,我们需要把关闭浏览器这个动作加到测试套件中
在测试套件的设置中增加teardown(完成后操作),用来在全部测试用例完成后关闭浏览器:
同理,我们其实也不是在每条用例中都要打开浏览器,所以也可以把打开浏览器并设置分辨率并最大化的操作放到测试套件的setup中去。
那么,问题来了,我们的setup只能放一个关键字,如何在一个关键字中完成这么多操作呢?
在这里,用户关键字出场了(掌声)
增加了关键字后,我们发现增加了个keywords的域,里面包含创建的关键字:
剪切(因为以后用不上了)上面关于打开浏览器的那三行代码,放到我们创建的关键字下面:
我们切换到表格界面看看刚才完成的用户关键字:
实际上,我们是封装了这三个动作,使用一个关键字就可以调用
我们把刚才写的用户关键字设置到测试套件的Setup中,这样每次套件中的用例执行的时候,会先执行这个setup里的关键字(多条连续跑只执行一次):
我们可以在测试套件中再写一条用例,在用例开始的时候使用go to关键字来完成打开淘宝页面的动作,从而开始操作淘宝的搜索功能:
选择多条的执行顺序是:测试套件setup---测试用例hello world---测试用例taobao---测试套件teardown:
基本的操作就是这些。
入门后需要多看Selenium2Library的关键字,有时候你想实现某个功能,搞了半天发现原来人家早都有了。
入门后还要多练习元素的定位,这个是基础,没有熟练的定位,就没有更高的工作效率。
作者:山豆根行者
原文链接:https://blog.csdn.net/qq_27534003/article/details/87437195