普通测试如何用Airtest编写UI自动化脚本

前言

  自动化测试,对于普通人来说,似乎是一种很高深的技术——它可以自动对UI操作,可以自动记录用户行为,甚至可以定时开始,听起来很厉害很高级。但实际上呢,自动化只不过是测试大佬们拿来假装自己逼格比较高的玩意,如果你理解了它的模式,揭开它的面纱后,你就会发现,自动化也不过如此。

  自动化测试又大致分为UI自动化和接口自动化两种。其中UI自动化,即用脚本代替人工在app/游戏上点点点;而接口自动化(在游戏行业被称为协议自动化),即跳过客户端直接通过接口/协议与服务端接照指定流程进行对话。两种自动化一个侧重于客户端使得其通俗易懂,一个侧重于服务端而让其更艰难晦涩;但是UI自动化中其实包含了接口自动化,而接口自动化又因为抛弃了UI变得更轻便。

  在此,我们主要讲解下UI自动化。UI自动化,之前可能需要一定的代码基础才能参与进来,但在airtest发布之后,这一硬件要求也跟着大大地降低了。Airtest的傻瓜式设计,使得其可以跳过渲染树节点定位,直接以图片识别的形式去定位,让自动化变得十分简单,你只要根据要求截好对应的图片,在准备完自动化流程后,点击一下开始,自动化便开始了

脚本文件的创建

  首先需要创建脚本文件,airtest提供了两种格式的文件——.air后缀和.py后缀

  

  虽说分开了两种,但两者之间的差别其实不是很大(.air文件最终也是转换成.py文件执行),具体选择哪个看个人喜好,个人比较喜欢纯python文件,因此创建的为.py后缀的文件

  

  设置文件保存的路径及文件名

  

  设定好之后直接点击下方的ok按钮,airtest即会自动生成如下的python文件

   

设备的连接

  设备的连接这里就不细讲了,直接用connect连接便可,若发现连接失败,尝试点击connect右侧的下拉框选择use javacap或者其它

 脚本的编写

  airtest脚本的编写变得非常简单,基本上只要了解python的while/for循环、等待,就可以应对大多数的脚本编写

  以腾讯动漫举个例子,为其设定一个自动化需求为:

    1.打开app

    2.登录

    3.跳转到QQ授权界面取消授权

    4.再登录

    5.跳转到QQ授权界面确定授权

    6.登录成功

    7.搜索漫画“尸兄”

    8.退出登录

    9.不停重复登录到退出之间的操作以确定是否有问题

  当然,app的自动化目前主流是appium,不过airtest的纯UI识别也是可以做app的自动化,因此在此用更为方便的app,而不是游戏

  我们首先进行需求分析,“不停重复登录到退出之间的操作”说明我们需要使用的是while循环,而前面的流程我们只需要按顺序写好就行了

  打开app(最好是用package名去打开,这里因为懒得去翻腾讯动漫的包名,便直接以ui识别的形式打开):

    打开我们只需要点击一次app即可,因此

    

    先点击左侧的touch按钮,点击后会出现截图的效果,直接移动到腾讯动漫的图标上,把动漫的图标截图下来,airtest会自动在.py文件上生成touch代码

     

  由于打开app需要等待一段时间让app初始化一下,大概5秒,我们但要引入python的等待time.sleep(5):

    

  跳转到登录页签:

    

  再将while True写上:

    

   我们手动将app打开,再对后续的步骤每一步用airtest截好对应的操作图:

     “点我登录”

    

    跳转到登录方式后,我们要点击QQ登录

    

    后续的都是这样一步一步截图即可,这里就暂略了

脚本的执行

  脚本的执行只需要点击上方对应的三角按钮即可

  

 LOG

  对于不太懂python的人来说,log查看窗打印的东西可能看不懂,因此有参考价值的只有报错时间(哪一步的报错会直接在代码出置红显示)

  

posted @ 2020-03-09 00:25  鸽男  阅读(1635)  评论(2编辑  收藏  举报