阅读文本大概需要 5 分钟。
很多读者看过之前的文章,发现我使用最多的是一款 Airtest 的自动化测试框架。

Airtest 是一款适合于游戏和 App 的 UI 自动化测试框架。
下面对 Airtest 在平时自动化和爬虫过程中的常见问题做一个汇总。
1、优势

Airtest 上手难易度低,高效方便,结合 Python 脚本,可以完成一些自动化的操作,也可以快速开发出一款 App 端的爬虫。
2、AirtestIDE 还是 Pycharm
如果只是简单的一些操作,可以使用官网提供的 AirtestIDE,通过简单的拖拽、按压、点击就能完成脚本录制和回放操作。


当然,想完成一些复杂的操作,就需要在 Python 虚拟环境下安装 pocoui 依赖库,然后借助 Pycharm 编写 Python 脚本来完成。
3、Airtest 结合 Python 操作

只需要在 Python 虚拟环境下安装 pocoui 依赖库。


pip3 install pocoui

4、有线连接和无线连接
利用 Airtest 驱动手机完成自动化操作,有两种方式:有线连接、无线连接。
有线连接:手机通过数据线连接 PC,确保使用 adb devices 命令能找到设备。

然后,通过下面的 Python 代码即可以完成连接操作。


# 通过有线连接 PC 端和手机
self.poco = AndroidUiautomationPoco(screenshot_each_action=False)
auto_setup(__file__)

无线连接:保证手机和 PC 在同一个网段,使用 adb 启动手机端的 adb 端口,然后使用下面的 Python 代码完成连接操作。


# 通过 adb 命令开启手机端的 adb 端口
adb tcpip 6666

# 通过 Python,无线连接 PC 和手机
device = connect_device('android:///192.168.1.166:6666?cap_method=javacap&touch_method=adb')

poco = AndroidUiautomationPoco(device_1, screenshot_each_action=False)

auto_setup(__file__)
5、常用操作
只需要通过 Android SDK 中的 Monitor 工具识别到元素 ID 或者文本,然后借助 Poco 依赖库完成常见的操作。

常用手势操作包含:点击、长按、滑动。


# 点击1
poco(元素ID).click()

# 点击2
poco(text=u'元素文本内容').click()

# 长按
poco(元素ID或者元素文本).long_click(长按的时长)

# 滑动到下一页
poco.swipe([起始坐标x轴, 起始坐标y轴], [终点坐标x轴, 终点坐标y轴], duration=滑动时长)

poco.swipe([0.5, 0.8], [0.5, 0.3], duration=1)

# 滑动到上一页
poco.swipe([0.5, 0.3], [0.5, 0.8], duration=1)

pocoui 已经封装了页面的常用操作,包含:回到桌面、模拟手机返回键、锁屏键、截屏、卸载、打开应用等操作。


# pocoui 封装的一些方法

# 打开应用
def start_app(package, activity=None):

# 停止应用
def stop_app(package):

# 截屏
def snapshot(filename=None, msg=""):

# 回到桌面
def home():

# 模拟按键操作
# 模拟页面返回操作
keyevent('BACK')
6、异常处理
由于 Airtest 是一款 UI 测试框架,对可见的元素能通过元素 ID 或者文本内容拿到元素,处理列表的时候,滑动的时候经常会导致元素异常,这里要做好异常处理。


# 处理列表元素
try:
     self.__handle_good_list()
except:
     pass
7、元素获取不到
借助 Android SDK 中的 Monitor 查看元素属性,会发现有些元素没有 ID 和文本,这时候可以查看 UI 树的结构,找到一个可以确定的元素,通过父子关系拿到这个元素。
8、点击无效
有的时候,通过 pocoui 拿到元素对象,但是点击没有效果。

这种情况,可以通过反复点击,直达某个元素出现来解决这个问题。

# 点击搜索按钮
while True:
     # 等待检索结果列表出现
     if not self.poco(元素ID).exists():
          # 再次点击
          perform_click(self.poco(元素ID, text='搜索'))
     else:
          break
THANDKS
- End -

- To Be Continued -


欢迎关注公众号:测试开发社区
微信扫描二维码,关注我的公众号

聊聊 Airtest 自动化工具的更多相关文章

  1. Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候,当时,看了一下官方的文档,大概是类似Sikuli的一个工具,主要用来做游戏自动化的,通过截图的方式用来解决游戏自动化测试的难题.最近,移动端测试的同事尝试用 ...

  2. 强大的 Python 任务自动化工具!invoke 十分钟入门指南

    接着前面的<tox 教程>,以及刚翻译好的<nox文档>,我们继续聊聊 Python 任务自动化的话题. nox 的作者在去年的 Pycon US 上,做了一场题为<Br ...

  3. Airtest自动化测试工具介绍

    官方网站:http://airtest.netease.com/ Airtest IDE: 跨平台的UI自动化测试编辑器,适用于游戏和App,详细参见官网文档:http://airtest.netea ...

  4. web自动化工具-开篇

    web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...

  5. web自动化工具-liveStyle

    web自动化工具-liveStyle LiveStyle. The first bi-directional real-time edit tool for CSS, LESS and SCSS主要用 ...

  6. web自动化工具-livereload

    web自动化工具-livereload livereload是一个很神奇的工具,主要解放了F5键,监听文件变动,整个页面自动刷新.可搭载gulp等构建工具使用.和liveStyle 针对样式文件相比, ...

  7. web自动化工具-Browsersync

    web自动化工具-Browsersync browser-sync才是神器中的神器,和livereload一样支持监听所有文件.可是和livereload简单粗暴的F5刷新相比,browsersync ...

  8. 前端自动化工具gulp自动添加版本号

    之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...

  9. 学习安装并配置前端自动化工具Gulp

    Gulp和所有Gulp插件都是基于nodeJs来运行的,因此在你的电脑上需要安装nodeJs,安装过程请移驾安装并配置前端自动化工具--grunt.安装完成后,通过运行cmd进入DOS命令窗口,如图: ...

随机推荐

  1. bzoj5104 Fib数列(BSGS+二次剩余)

    快AFO了才第一次写二次剩余的题…… 显然应该将Fn写成通项公式(具体是什么写起来不方便而且大家也都知道),设t=((1+√5)/2)n,T=√5N,然后可以得到t-(-1)t/t=√5N,两边同时乘 ...

  2. 统计一个字符串中"java"出现的次数

    public class CountJava{ public static void main(String[] args){ String str = "dnajjavaNISLjavaE ...

  3. Linux Shell命令总结

    关机/重启 关机(必须用root用户) shutdown -h now ## 立刻关机 shutdown -h + ## 10分钟以后关机 shutdown -h :: ##12点整的时候关机 hal ...

  4. i春秋web作业2.24

    Web安全工程师(入门班) [全国线上入门班53期]课后作业   2020-2-24 DorinXL   分别尝试安装一个Windows和Linux操作系统 想要在虚拟机上装系统,首先需要下载对应的镜 ...

  5. mysql关键字汇总

    ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE C ...

  6. Elasticsearch-URL查询实例解析

    ES(elasticsearch),以下简称ES ES的查询有query.URL两种方式,而URL是比较简洁的一种,本文主要以实例探讨和总结URL的查询方式 1.语法 curl [ -s][ -g][ ...

  7. 吴裕雄--天生自然 HADOOP大数据分布式处理:使用WinSCP连接本机与虚拟机

  8. deeplearning.ai 序列模型 Week 3 Sequence models & Attention mechanism

    1. 基础模型 A. Sequence to sequence model:机器翻译.语音识别.(1. Sutskever et. al., 2014. Sequence to sequence le ...

  9. Visual Studio 2017部署方法

    1.打开官网下载链接 https://www.visualstudio.com/zh-hans/downloads/ 2.选择适合的版本,选择下载,进入下载界面 如果无反应,点击请单击此处重试,开始下 ...

  10. Qt unsigned char *与QString之间的相互转换

    //unsiged char *转QString unsigned char  *str = "fdd" ; char *str1 = (char *)str; QString s ...