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

news2024/11/25 14:40:41

目录

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')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14款奔驰R400升级ACC自适应巡航系统,解放双脚缓解驾驶疲劳

有的时候你是否厌倦了不停的刹车、加油?是不是讨厌急刹车,为掌握不好车距而烦恼?如果是这样,那么就升级奔驰原厂ACC自适应式巡航控制系统,带排队自动辅助和行车距离警报功能,感受现代科技带给你的舒适安全和…

【leetcode 力扣刷题】反转链表+递归求解

反转链表递归求解 206. 反转链表解法①:取下一个节点在当前头节点前插入解法②:反转每个节点next的指向解法③:递归 92.反转链表Ⅱ反转left到right间节点的next指向 234.回文链表解法①:将链表元素存在数组中,在数组上…

python接口自动化之如何使用requests库发送http请求

前言 今天笔者想和大家来聊聊python接口自动化如何使用requests库发送http请求,废话呢笔者就不多说了,直接进入正题。 一、requests库 什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licens…

大数据 算法

什么是大数据 大数据是指数据量巨大、类型繁多、处理速度快的数据集合。这些数据集合通常包括结构化数据(如数据库中的表格数据)、半结构化数据(如XML文件)和非结构化数据(如文本、音频和视频文件)。大数据…

跨境电商独立站创业路线?怎么做外贸网站?

跨境电商独立站创业需要做哪些准备?创建国际贸易自主网站的流程? 跨境电商独立站创业,正逐渐成为许多创业者的首选。这一领域蕴藏着巨大的商机,同时也需要创业者具备坚定的决心和深入的市场洞察力。下面将为您详细介绍一条成功的跨境电商独…

科技云报道:云计算下半场,公有云市场生变,私有云风景独好

科技云报道原创。 大数据、云计算、人工智能,组成了恢弘的万亿级科技市场。这三个领域,无论远观近观,都如此性感和魅力,让一代又一代创业者为之杀伐攻略。 然而高手过招往往一瞬之间便已胜负知晓,云计算市场的巨幕甫…

网络安全应急管理与技术实践:应对不断演化的网络威胁

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 当谈论网络安全应急管理…

基于web的服装商城系统java网上购物商店jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于web的服装商城系统 系统有1权限:前台…

优化学习体验的在线考试系统

随着互联网的发展,在线教育逐渐成为学习的主要方式之一。在线考试系统作为在线教育的重要组成部分,对于学习者提供了更为便捷和灵活的学习方式。但是,如何优化学习体验,提高学习效果,仍然是在线考试系统需要解决的问题…

等级查询发布助手

考试成绩的发布是学校教学工作中的一项重要任务,传统的手工录入、统计和发布成绩的方式既耗时又容易出错。为了提高老师的工作效率和准确性,推荐老师们试一试易查分考试等级发布系统。 易查分是一个查询/发布发布平台 1. 快速高效:老师只需将…

『论文精读』FastViT(ICCV 2023,Apple开源)论文解读

『论文精读』FastViT(ICCV 2023,Apple开源)论文解读 文章目录 一. FastViT简介二. 模型架构2.1. Stage 的内部架构2.2. Stem 的结构2.3. Patch Embedding 的架构2.4. 位置编码 三. 参考文献 论文下载链接:https://arxiv.org/pdf/2303.14189.pdf论文代码…

【网络层协议】ARP攻击与欺骗常见的手段以及工作原理

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、ARP攻击的常见手段 第一种:IP…

ardupilot开发 --- 仿真篇

环境 安装wsl2,win11自带wsl,win10需要安装;git clone ardupilot 源码;安装 Linux下的build环境;安装 flightgear(非必须) sudo apt-get install flightgearbuild 想要仿真的载具类型&#xff…

shell 02(shell变量)

一、shell变量 变量用于存储管理临时的数据, 这些数据都是在运行内存中的。 1.1 变量类型 1.1.1 系统环境变量 是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用 shell的配置文件分类 全局配置文件 /etc/profile /et…

外贸独立站怎么做内容营销?外贸独立站内容营销的步骤e6zzseo

在如今全球化的商业环境下,外贸独立站已成为吸引国际客户、拓展市场份额的重要工具。然而,仅仅拥有一个外贸独立站还不足以保证成功,内容营销在其中扮演着至关重要的角色。本文将介绍如何在外贸独立站上实施内容营销,以及实现有效…

交换的综合实验

目录 ​编辑 一,交换层面的配置 1.channel 2.vlan 3.trunk 二,配置路由 R1 R2 LW1 LW2 三,OSPF 四,能够访问外网操作 一,交换层面的配置 配置顺序 channel vlan trunk stp svi vrrp dhcp 1.channel LW…

用了好几年的IDEA主题及配置,拿去吧不谢。

前言 最近这几年一直用一套IDEA的主题及配置,分享给各位,如果符合你的口味,可以下载了玩玩。 我个人是非常喜欢的,不管是观感还是敲代码都很爽的。 附上一张代码的主题色,大概就是这样子,我个人喜欢清爽的白…

防火墙+路由模式部署

一、防火墙 防火墙最主要功能是提供访问控制能力 防火墙默认管理口为ge0/0(部分型号有专门的MGT口),管理地址为https://192.168.1.250,默认管理口只开启了https和ping。登录防火墙串口,波特率为9600,默认…

Anaconda常用指令

导语 Python是现今较为流行的一门编程语言,解释性强,语法灵活,而且具有强大的函数库,这些函数全部都被封装成一个个的模块(Module),也称作包,所以我们在使用的时候需要进行导入(import),但是所有…

【数据结构】实现带头双向循环链表

目录 前言:一、介绍带头双向循环链表1.带头双向循环链表的结构2.带头双向循环链表的功能 二、实现带头双向循环链表1.创建节点的结构2.函数的声明2.函数的实现(1)创建一个新节点(2)初始化哨兵位(带头&#…