一.Airtest与Poco区别

1.Airtest是基于Python的跨平台UI自动化测试框架
1.1.基于图像识别原理,适用于PC应用和移动端app

2.Poco是基于UI控件搜索的自动化测试框架
2.1.除对Android、IOS外,也支持微信小程序、微信小游戏和H5应用
3.两者对比
3.1.AirTest简单直接,兼容各种环境,无需嵌入代码

3.2.Poco控件识别更准确,界面迭代影响小

二.Airtest IDE界面

在这里插入图片描述
三.poco窗口

1.通过选择连接的设备查看图层页面结构及元素属性 ,首次连接会给设备安装服务程序PocoService

在这里插入图片描述
在这里插入图片描述

2.设备窗口连接设备

在这里插入图片描述

3.注意:设备连接需要让环境中的adb版本一致,否则连接报错

在这里插入图片描述
在这里插入图片描述

四.airtest窗口

1.支持通过界面截图定位操作元素,支持录制脚本,首次使用在移动设备上安装Yosemite

在这里插入图片描述
在这里插入图片描述

五.airtest常用方法

1.连接设备
# 方法一:
from airtest.core.api import *
from airtest.core.android import Android
# 指定连接的手机设备,指定参数为设备序列号,为空时默认连接获取到的第一台设备
dev = Android()  

# 连接windowns设备
# from airtest.core.win import Windows  
# win = Windows()  
 
# 方法二:
from airtest.core.api import *
from airtest.core.android.recorder import *
from airtest.core.android.adb import *
auto_setup(__file__, logdir=True, devices=["android://127.0.0.1:5037/470091b1"])  # 470091b1为设备序列号
adb = ADB(serialno="470091b1")
2.安卓命令等操作
# 设备序列号
print(dev.get_default_device()) 
# 获取所有安装包,third_only=True第三方安装包,默认为False 
print(dev.list_app())  
# 设备屏幕分辨率大小
print(dev.get_current_resolution())  
# 显示信息,同dev.display_info
print(dev.get_display_info())  
# 获取安装包所在位置,参数为包名
print(dev.path_app('com.huawei.android.launcher'))  

# 检查包是否在设备上已安装
print(dev.check_app('com.huawei.android.launcher'))  

# 安装应用
print(dev.install_app(r'D:\zhuomian\下载\手机apk\高德地图.apk'))

# 卸载安装包
print(dev.uninstall_app('com.huawei.android.launcher'))

# 启动应用
print(dev.start_app('com.huawei.android.launcher'))

# 关闭停止应用
print(dev.stop_app('com.huawei.android.launcher'))

# 清除应用数据
print(dev.clear_app('com.huawei.android.launcher'))

# 执行shell命令
print(dev.shell('pm list permissions'))
3.安卓按键操作
# keyevent按键,HOME键,POWER电源键  
dev.keyevent("HOME")
 
# wake唤醒设备  
dev.wake()
 
# 解锁设备
dev.unlock()  
 
# home键  
dev.home()  # 同dev.keyevent("HOME")
 
# text输入文本
# 第一个参数文本输入
# 第二个参数enter是否按下`Enter`键
# 第三个参数search是否要按下输入法键盘中的search键
dev.text('输入内容')
 
# touch点击
# touch在设备上执行点击操作
# pos点击的坐标点
# duration点击持续时间,持续时间大点可以模拟长按
dev.touch(pos=(800, 900), duration=2)
 
# 双击double_click
dev.double_click(pos=(800, 900))
 
# 滑动
# p1开始位置
# p2结束位置
# fingers滑动的手指数量,1或者2,默认为1,可以模拟双指
dev.swipe(p1=(500,1200),p2=(200,500),duration=1,steps=2,fingers=2)
 
# swipe_along执行一段连续的滑动操作,仅适用于minitouch和maxtouch
# 可模拟九宫格解锁
# 参数:1.要移动的每个点的坐标集合,2.整个过程的持续时间,3.每两个点之间的移动步数
dev.swipe_along(([800, 800], [700, 700], [600, 600], [500, 500], [400, 400]), duration=2, steps=1)
 
# two_finger_swipe执行两个手指一起滑动的操作
# (模拟双指操作,除模拟缩放还可实现旋转),仅适用于minitouch和maxtouch
# 参数:tuple_from_xy、tuple_to_xy开始和结束的坐标;offset第二根手指偏移量(默认(0, 50))
dev.two_finger_swipe(tuple_from_xy=(500,1200),tuple_to_xy=(200,500),duration=3,steps=3,offset=(0,100))
 
# 截屏 
dev.snapshot('jt.png')   
 
# pinch模拟双指操作
# 参数:
# in_or_out:in向内,out向外
# percent:双指夹点距离;center:双指中心点
# steps:移动的步数(双指操作的次数)
dev.pinch(center=None, in_or_out='out', percent=0.6, duration=3, steps=10)
4.设备状态获取
# 检查屏幕是否打开,返回布尔值    
print(dev.is_screenon())
 
# 检查设备是否锁定,返回布尔值  
print(dev.is_locked())
  
# 软键盘是否开启,返回布尔值
print(dev.is_keyboard_shown())  
5.录屏 
# 安卓录屏连接方法一:
from airtest.core.api import *
from airtest.core.android.recorder import *
from airtest.core.android.adb import *

# serialno是序列号(adb devices获取)
#auto_setup(__file__, logdir=True, devices=["android://127.0.0.1:5037/470091b1"])
adb = ADB(serialno="470091b1")

#auto_setup(__file__, logdir=True, devices=["android://127.0.0.1:7555"])
adb = ADB(serialno="127.0.0.1:7555")

# 实例化录制对象
recorder = Recorder(adb)  

# max_time参数用来设置最长的录屏时间,可以根据实际需求修改录屏时长
# 如果脚本的运行时长小于max_time值,则录屏时长以脚本实际运行时长为准
# 如果脚本运行时长大于max_time值,录屏时长则以max_time的时长为准
recorder.start_recording(
    max_time=10)  
    
for _ in range(10):
    time.sleep(.5)
    
    # 文本输入
    dev.text('测试录屏')  
recorder.stop_recording('test.mp4')
 
 
# 安卓录屏连接方法二:
from airtest.core.android import Android

# 指定连接的手机设备,指定参数为设备序列号,为空时默认连接获取到的第一台设备
dev = Android()  
dev.start_recording(max_time=10)


for _ in range(10):
    time.sleep(.5)
    dev.text('ceshi',enter=False)
dev.stop_recording('ceshi.mp4')
 
 
# windowns录屏
import time
from airtest.core.win import Windows
win = Windows()
 
win.start_recording(output='win.mp4')

for _ in range(10):
    time.sleep(.5)
    win.text('录屏测试')
win.stop_recording()
6.windows设备常用操作
# 截屏
win.snapshot('win.png')
 
# 执行一个按键响应
win.keyevent('{RWIN}')
 
# 输入文本
win.text('输入内容')
 
# 模拟发送键盘扫描码,而不是上述发送虚拟键码的keyevent()方法。
win.key_press('RWINDOWS')  # 按下键
win.key_press('R')
win.key_release('RWINDOWS')  # 释放键
win.key_release('R')
 
# 鼠标点击
win.touch((270,1060)) 
 
# 鼠标双击
win.double_click((200,760))  
 
# 执行拖动操作(鼠标按下并且释放)
win.swipe((260, 300), (500, 800), duration=.3, steps=1)  
 
# 模拟鼠标移动按下和释放,可达到swipe的效果
win.mouse_move((500, 800))  # 移动鼠标
win.mouse_down(button='left')  # 按下鼠标
win.mouse_move((260, 300))  # 移动鼠标
win.mouse_up(button='left')  # 释放鼠标
# 模拟打开命令窗口并执行命令
import time
from airtest.core.win import Windows

win = Windows()
 
win.key_press('RWINDOWS')  # 按下键
win.key_press('R')
win.key_release('RWINDOWS')  # 释放键
win.key_release('R')
time.sleep(1)
win.text('cmd')
win.keyevent('{ENTER}')
time.sleep(1)
win.text('dir')
win.keyevent('{ENTER}')
time.sleep(2)
win.text('cls')
win.keyevent('{ENTER}')
7.生成airtest报告
from airtest.report.report import simple_report
auto_setup(__file__, logdir=True)

# 参数:
# filepath指定脚本文件路径
# logpath=True指定log内容路径
# logfile=None指定log.txt文件路径
# output=HTML_FILE指定HTML报告的生成路径,必须以 .html结尾
 
for _ in range(10):
	time.sleep(.5)
	dev.text('测试脚本报告')
	
simple_report(__file__, logpath=True, output='airtestlog.html')
Logo

一站式 AI 云服务平台

更多推荐