如何用Airtest编写UI自动化脚本

前言

  游戏并不像app一样直接把渲染树节点暴露出来,这就造成游戏UI自动化在元素定位上的不方便性,不过依赖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查看窗打印的东西可能看不懂,因此有参考价值的只有报错时间(哪一步的报错会直接在代码出置红显示)

  

原文地址:https://www.cnblogs.com/badluckforyou/p/12446094.html

时间: 2024-11-05 18:44:48

如何用Airtest编写UI自动化脚本的相关文章

编写UI自动化测试用例原则

1.一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器.2.一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统3.尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况) ,验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强. (我们尽量遵循用户正常使用原则编写脚本即可)4.脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其

Robot FrameWork UI自动化脚本稳定性与原生关键字

在执行robotframework  的用例时,经常会出现稳定性差的问题.用例执行第一次成功,执行第二次就可能报错.自己对这个问题挠头很久,不知道怎么解决.今天在浏览网页的时候发现了一个不错的帖子,好像能够解决这个稳定性的问题.然后就把贴子搬了过来,为自己做一下备份(看了人家的帖子后,发现原来还是自己对robotframework的关键字用的不够熟悉造成的?(????ω????)?). 众所周知,在UI自动化在运行时,时常会收到来自各方的挑战:开发会说,你的自动化不稳定,又误报了:测试会说,这个

使用IDEA工具编写Python自动化脚本遇到的小问题

1.无法编写代码:因为安装了IdeaVim,所以需要按i进入编辑模式才能输入 2.位于同一目录下的py文件,其中一个文件需要引入另一个文件from 模块名 import * 无法找到模块名:点击这两个文件上的文件夹,右键----点击Mark Directory as-----Sources Root 3.在学习TestSuite时候,将结果写到html中时遇到的问题: ①无法引入HTMLTestRunner:到官网下载,另存到你所写的项目的目录或者父目录下,其中要注意版本问题,Python2和P

自动化--APP UI自动化--Airtest学习

看到其他同事在使用airtest,于是学习一下 AirtestIDE提供了一个比较全的官方文档,讲解.操作都蛮细的 http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html 使用airtest执行ui自动化,首先要: 1.安卓 AirtestIDE 官方安装  http://airtest.netease.com/ 或 网盘安装: 链接:https://pan.baidu.com/s/1IaTR_ZPxy81mCPwGsyR

UI自动化和selenium相关以及八大定位

一.UI自动化相关 1. UI自动化的本质(重点) 定位元素→操作元素→模拟页面操作→断言→测试报告 2. 适合UI自动化的场景 UI自动化的前提条件 (1)需求不能频繁变动 (2)UI稳定(UI自动化就是基于UI层面的,UI界面总变化无法开展) (3)项目周期长(UI自动化脚本编写和调试耗时,项目周期短纯手工更高效) (4)回归测试频繁(回归测试多就会有不断的主流程功能需要回归,自动化更高效) 适用场景 (1)冒烟测试 (2)主功能回归测试 3. UI自动化的原则 (1)一个case完成一个功

Xshell设置运行自动化脚本

使用Xshell工具连接操作Linux系统,并编写运行自动化脚本示例: 这里介绍一种自动化下载日志文件的例子,下面先贴上编写的脚本,这里脚本命名为cyp-assout-log.js 如下: /* xshell调用自动化js脚本 */ /* 主函数 */ function Main() { /* 发送cd 改变到当前目录 */ xsh.Screen.Send("cd ~/projects/cyp-assout/logs/catalina"); /* 前面输入的是一条命令,还需要下面这一行

网易 UI 自动化工具 Airtest 浅用记录

一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使用目的是做安卓原生App的元素UI自动化. 二 资源索引 官方资源 网易游戏新开源的 UI 自动化测试项目 [Airtest Project] Airtest官网 Airtest官网上手教程 AirtestProject Github主页 AirtestIDE官方中文文档 Airtest 官方中文文

【Android测试】UI自动化代码优化之路(临时发布)

关于UI自动化的抱怨 听过不少人这样讲 "UI自动化非常不稳定,需求一改,界面一遍,全部都费了".我相信做过的人可能也会有同感.既然这个问题一直都是存在的,那么为什么没有人仔细分析原因呢? 我的老板georgeliao举了这样一个例子:每当需求变化的时候,开发没有跳起来,反而是测试跳了起来.然后不断的抱怨,界面元素全都改了,我的自动化的用例全部都要废弃掉了.那么我们是否想过,为什么开发可以从容不破的应对产品不断变化的需求?而我们却不能呢? 业内不少人也都放弃了UI自动化,觉得接口测试才

UI自动化的痛点

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px ".PingFang SC"; color: #454545 } li.li2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } span.s1 { font: 12.0px "Helvetica N