Airtest框架(跨平台自动化测试框架)

目录

Airtest与Poco

airtest IDE界面

poco窗口

airtest窗口

airtest常用方法

连接设备

安卓命令等操作

安卓按键操作

设备状态获取

录屏 

windows设备常用操作

生成airtest报告


Airtest与Poco

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

Poco是基于UI控件搜索的自动化测试框架,除了对Android、IOS外,也支持微信小程序、微信小游戏和H5应用。

两者对比:AirTest简单直接,兼容各种环境,无需嵌入代码;Poco控件识别更准确,界面迭代影响小

airtest IDE界面

安装见:Poco框架(跨平台自动化测试框架)_觅远的博客-CSDN博客

poco窗口

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

 

设备窗口连接设备

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

 

airtest窗口

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

 

 

airtest常用方法

中文官方文档

参考文档

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

# from airtest.core.win import Windows  # 连接windowns设备
# 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")
安卓命令等操作
    print(dev.get_default_device())  # 设备序列号
    print(dev.list_app())  # 获取所有安装包,third_only=True第三方安装包,默认为False
    print(dev.get_current_resolution())  # 设备屏幕分辨率大小
    print(dev.get_display_info())  # 显示信息,同dev.display_info
    print(dev.path_app('com.huawei.music'))  # 获取安装包所在位置,参数为包名
    print(dev.check_app('com.huawei.music'))  # 检查包是否在设备上已安装
    dev.install_app(r'D:\zhuomian\下载\手机apk\高德地图.apk')  # 安装应用
    dev.uninstall_app('com.lititi.apk')  # 卸载安装包
    dev.start_app('com.huawei.music')  # 启动应用
    dev.stop_app('com.huawei.music')  # 关闭停止应用
    dev.clear_app('com.huawei.music')  # 清除应用数据
    print(dev.shell('pm list permissions'))  # 执行shell命令
安卓按键操作
    # 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)
设备状态获取
# 检查屏幕是否打开,返回布尔值    
print(dev.is_screenon())

# 检查设备是否锁定,返回布尔值  
print(dev.is_locked())
  
# 软键盘是否开启,返回布尔值
print(dev.is_keyboard_shown())  
录屏 
# 安卓录屏连接方法1:
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"])
adb = ADB(serialno="470091b1")
recorder = Recorder(adb)  # 实例化录制对象
recorder.start_recording(
    max_time=10)  # max_time参数用来设置最长的录屏时间,可以根据自己的实际需求修改这个录屏时长。如果脚本的运行时长小于max_time值,则录屏时长以脚本实际运行时长为准,如果脚本运行时长大于max_time值,录屏时长则以max_time的时长为准。
for _ in range(10):
    time.sleep(.5)
    dev.text('测试录屏')  # 文本输入
recorder.stop_recording('test.mp4')


# 安卓录屏连接方法2:
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()
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}')
生成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')

猜你喜欢

转载自blog.csdn.net/JBY2020/article/details/132426191