likes
comments
collection
share

解放双手,Airtest使用指南

作者站长头像
站长
· 阅读数 59

前言

在如今生活中,有许多繁琐而又简单的事情浪费着我们有限的精力。例如手机各类应用的签到一样,拼夕夕 淘宝的签到领取现金;有道云笔记签到领取空间;甚至连领克app都有签到系统.......

解放双手,Airtest使用指南

这些签到奖励对于羊毛党和强迫症来说,那可真是要了老命了。每日都会打断我的思路,生怕哪个应用忘记又签到导致奖励没了。长久以往,我终于决定做一个脚本软件,每日只需要执行一次,就可自动帮我把所有的应用给签到完毕,既节省了我们签到的点击动作,又避免了遗漏应用签到,省心省力。

对于咱们来说,最简单的实现这个需求就完事了,我就上网搜了下自动化脚本工具,没想到第一个就让我觉得值得一试。这就是今天我们主要说明的主角-Airtest!

简介

Airtest是由网易游戏推出一个跨平台的、 基于图像识别 的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS。如果就只需要图像识别的话,我们就直接安装他的ide就好了,里面已经自带了相关环境,能够支持大部分基础操作。

下载

安装环境

Windows Microsoft Windows 7/8/10 (64bit / 32bit) Python 2.7 或更高

macOS macOS 10.12.1 或更高 Python 2.7 或更高

Ubuntu Ubuntu 16.04 64bit Python 2.7 或更高

注意,Ubuntu只支持16.04,而且还容易出现一些异常问题,如果想在Ubuntu开发可能需要用其他python工具进行调试。

如果满足条件的话,那么可以下载页(airtest.netease.com/changelog.h…),下载安装到指定目录就可以进行相关的开发操作了。

AirtestIDE使用

打开应用,迎面展示的是这样的页面: 解放双手,Airtest使用指南 由于都是中文的选项,比较易懂,我就简单讲解下相关步骤(Android设备):

  1. 手机插入usb,并且开启调试模式并且授权当前电脑调试
  2. 点击右方刷新ADB,这时候Android设备就有当前连接的手机 解放双手,Airtest使用指南

3.点击 connect,使连接当前设备,这时候右侧就会变成当前手机界面。可以通过鼠标模拟手指进行相关操作

解放双手,Airtest使用指南

4.录制脚本,Airtest自动化分为两部分(以下命名按照自己理解进行定义,如有错误麻烦指正):

  • 图形化脚本,就在左侧上方的Airtest辅助窗,这里是通过图片识别进行对应判断。
    • 对应API介绍文档链接:Airtest介绍 - Airtest Project Docs (netease.com)
    • 如果嫌麻烦的同学可以直接点击 F6 或者 解放双手,Airtest使用指南 按钮进行录制,在右侧窗进行对应的操作,IDE就会自动生成相关步骤代码。(不智能,不推荐)
  • 层级判断脚本,相较于图形化可以减少截图判断等操作,但是支持较少,像cocos游戏引擎等需要接入相关SDK才能拿到层级

pythoncharm使用Airtest

1. 安装Airtest相关依赖

# 安装Airtest框架
pip install airtest
# 安装Poco框架;编写了Poco语句就需要安装 
pip install pocoui 
# 安装airtest-selenium框架;编写了airtest-selenium语句就需要安装 
pip install airtest-selenium

注意:高版本 Ubuntu 可能缺失了distutils导致报错:

ModuleNotFoundError: No module named 'distutils.core'

解决方案:

# 查看当前的python版本
python3 --version
#安装对应版本distutils,这里是 Python 3.7.8 的版本号
sudo apt install python3.7-distutils

2.pythoncharm导入相关依赖

解放双手,Airtest使用指南

解放双手,Airtest使用指南

解放双手,Airtest使用指南 tips:如果对python不太熟悉,本身有下载AirtestIDE的,可以通过点击 文件-> 新建脚本-> .py纯python -> 选择对应python文件,这时候IDE会覆盖那个文件代码。

解放双手,Airtest使用指南

以下是我简易实现了一个自动签到的脚本:

效果图

解放双手,Airtest使用指南

代码:

# -*- encoding=utf8 -*-
__author__ = "user"

# 初始化环境
from airtest.core.api import *
from airtest.cli.parser import cli_setup

auto_setup(__file__)

# Android poco的初始化脚本
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)


if not cli_setup():
    auto_setup(__file__, logdir=True, devices=[
        "Android:///?cap_method=javacap&ori_method=adbori",
    ])

start_app("com.lynkco.customer")
sleep(5)
# 控件点击操作
poco("com.lynkco.customer:id/ly_tab_my").click()
sleep(2)
poco("com.lynkco.customer:id/signIn").click()
sleep(2)
stop_app("com.lynkco.customer")
start_app("com.max.xiaoheihe")
sleep(5)
poco("com.max.xiaoheihe:id/rb_1").click()
sleep(2)
poco("com.max.xiaoheihe:id/rb_1").click()
sleep(2)
stop_app("com.max.xiaoheihe")
start_app("com.taobao.taobao")
sleep(5)
poco("android.widget.FrameLayout").child("android.widget.LinearLayout").offspring("android:id/tabhost").offspring("我的淘宝").child("android.widget.ImageView").click()
sleep(2)
poco("android.widget.FrameLayout").child("android.widget.LinearLayout").offspring("com.taobao.taobao:id/recycler_view").child("android.widget.FrameLayout")[5].offspring("android.support.v7.widget.RecyclerView").child("android.widget.FrameLayout")[1].child("android.widget.ImageView")[0].click()
sleep(2)
stop_app("com.taobao.taobao")

相关文献参考

转载自:https://juejin.cn/post/7350601840399253554
评论
请登录