使用Airtest Poco实现游戏客户端UI自动化(Python)

安装 AirtestIDE,了解POCO

下载地址: Airtest IDE
使用文档:AirtestProject官方文档
poco介绍:Poco介绍

连接设备,打开游戏客户端(Unity为例)

在操作前,请确保需要测试的游戏客户端已经集成了poco-sdk,如果没有集成是获取不到UI元素的。

Poco-SDK接入指南: 官方文档

python连接设备脚本代码如下:

# 引入需要的包
from airtest.core.api import *
from airtest.core.android.android import Android
from poco.drivers.unity3d import UnityPoco

# 自动获取手机序列号
try:
    deviceId = device().uuid
except:
    deviceId = Android().uuid

# 连接设备
auto_setup(__file__, logdir=False, devices=["Android://127.0.0.1:5037/%s" % deviceId])

# 初始化UnityPoco
poco = UnityPoco()
一些poco操作方法的封装
from poco.exceptions import PocoNoSuchNodeException, PocoTargetTimeout

# 1.查找元素
def try_find(name=None, **kw):
	try:
		self.poco(name=name, **kw).wait_for_appearance(timeout=10)
		return True
	except PocoTargetTimeout:
		return False    
# 1.使用
if try_find(name="ui_test", text="测试"):
	pass

# 2.点击元素
def try_touch(name=None, **kw):
	try:
		self.poco(name=name, **kw).click([0.5, 0.5])
	except PocoNoSuchNodeException:
		raise PocoNoSuchNodeException

# 3.使用
if try_find(name="ui_test", text="测试"):
	try_touch(name="ui_test")

# 4.滑动元素
def swipe(name=None, pos=None):
	try:
		if not isinstance(pos, list):
			raise TypeError("The input must be a list")
		self.poco(name=name).focus([0.5, 0.5]).swipe(pos)
	except PocoNoSuchNodeException:
		raise PocoNoSuchNodeException

# 4.使用
swipe(name="ui_test", [0.2, -0.2])

# 5.获取元素text内容
def get_text(name=None):
	try:
		text = self.poco(name=name).get_text()
		return text
	except PocoNoSuchNodeException:
        raise PocoNoSuchNodeException

# 5.使用
get_text(name="ui_test")

#6.设置text内容
def set_text(name=None, text=None):
	try:
		self.poco(name=name).set_text(text)
	except PocoNoSuchNodeException:
		raise PocoNoSuchNodeException

#6.使用
set_text(name="ui_test", text="test")
### 关于AirTestPoco使用教程 #### AirTestPoco简介 AirTest是一个用于UI自动化的框架,支持多平台的应用程序测试。它能够通过图像匹配技术来定位界面元素并执行交互动作。而Poco则是由AirTest团队开发的一个专门针对原生应用、H5页面以及Unity3D游戏等场景下的UI自动化解决方案[^1]。 #### 安装配置环境 为了开始使用AirTest IDE进行脚本编写,在官方网站可以找到详细的安装指南。完成安装之后就可以启动IDE连接目标设备,并加载待测应用程序实例,比如对于基于Unity引擎的游戏客户端来说,只需要按照官方文档中的指导步骤操作即可实现连接。 #### 封装断言方法 当构建测试案例时,通常会涉及到验证某些条件是否满足的情况。可以通过定义自定义函数的方式来简化这一过程。例如创建一个名为`assert_exists()`的方法用来确认特定图片是否存在屏幕上: ```python def assert_exists(template, msg=""): try: pos = exists(template) if not pos: raise AssertionError(msg) except Exception as e: print(f"Assertion failed: {msg}") raise e ``` 此段代码实现了基本的存在性校验逻辑,如果未能发现指定模板则抛出异常提示失败原因[^2]。 #### 给父类添加ADB命令的支持 为了让整个框架更加灵活易用,还可以考虑扩展基础类的功能使其具备调用Android Debug Bridge (ADB)的能力。这允许开发者直接发送指令到安卓终端从而获取更多控制权或者辅助信息。具体做法是在基底类中加入相应成员变量保存Shell对象以便后续调用: ```python from airtest.core.api import device as current_device class BaseTestCase(unittest.TestCase): @classmethod def setUpClass(cls): cls.shell = current_device().shell ``` 这样做的好处在于可以在子类里方便地访问这个属性进而发出各种类型的请求。 #### Poco常用API概览 - `agent.wait_for_application_launch()`: 等待应用程序完全启动后再继续下一步骤; - `poco(text="Start").click()`: 查找具有给定文本标签的对象并模拟点击事件; - `poco("ButtonName").get_text()`: 获取按钮上的文字内容作为返回值; - `poco.swipe([start_x,start_y],[end_x,end_y])`: 执行从起点坐标至终点坐标的拖拽手势; 上述列举了一些常用的接口供参考,实际上还有许多其他功能等待探索[^4]。 #### 商店测试样例 假设要对某款手机App内的商品详情页做一系列检查工作,则可能涉及如下几个方面: - 验证首页推荐位展示正常; - 测试搜索栏输入关键词后的响应情况; - 对比不同分类列表项之间的差异; - 跳转至支付环节前的各项参数设置正确与否等等。 每一步都需要精心设计对应的判断依据以确保最终结果的有效性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹落的树叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值