聊聊 Airtest 自动化工具

点击上方“ AirPython ”,选择“置顶公众号”
第一时间获取 Python 技术干货!


聊聊 Airtest 自动化工具_第1张图片


阅读文本大概需要 5 分钟。


很多读者看过之前的文章,发现我使用最多的是一款 Airtest 的自动化测试框架。

Airtest 是一款适合于游戏和 App 的 UI 自动化测试框架。


下面对 Airtest 在平时自动化和爬虫过程中的常见问题做一个汇总。



1、 优势

Airtest 上手难易度低,高效方便,结合 Python 脚本,可以完成一些自动化的操作,也可以快速开发出一款 App 端的爬虫。


2、 AirtestIDE 还是 Pycharm


如果只是简单的一些操作,可以使用官网提供的 AirtestIDE,通过简单的拖拽、按压、点击就能完成脚本录制和回放操作。

聊聊 Airtest 自动化工具_第2张图片

当然,想完成一些复杂的操作,就需要在 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.50.8], [ 0.50.3], duration= 1)

# 滑动到上一页
poco.swipe([ 0.50.3], [ 0.50.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




推荐阅读







聊聊 Airtest 自动化工具_第3张图片


THANDKS
- End -

你可能感兴趣的:(聊聊 Airtest 自动化工具)