ATX自动化测试框架API详解与实战指南

ATX自动化测试框架API详解与实战指南

【免费下载链接】ATX Smart phone automation tool. Support iOS, Android, WebApp and game. 【免费下载链接】ATX 项目地址: https://gitcode.com/gh_mirrors/at/ATX

概述

ATX是一款强大的自动化测试框架,主要用于移动设备(Android/iOS)的UI自动化测试。本文将全面介绍ATX框架的核心API使用方法,帮助开发者快速掌握自动化测试技巧。

设备连接与初始化

Android设备连接

ATX提供了多种连接Android设备的方式:

import atx

# 基础连接方式
d = atx.connect()  # 自动连接第一个可用设备
d = atx.connect("设备序列号")  # 连接指定设备

环境变量配置

为了方便持续集成,ATX支持通过环境变量配置连接参数:

# Linux/macOS
export ATX_CONNECT_URL="设备序列号"
export ATX_PLATFORM="android"

# Windows
set ATX_CONNECT_URL=设备序列号
set ATX_PLATFORM=android

支持的环境变量包括:

  • ATX_PLATFORM:平台类型(默认android)
  • ATX_CONNECT_URL:设备连接地址
  • ATX_ADB_HOST/ATX_ADB_PORT:ADB服务器地址
  • ATX_ADB_SERIALNO:设备序列号(建议使用ATX_CONNECT_URL替代)

应用管理

ATX提供了完整的应用生命周期管理功能:

package_name = 'com.example.game'
main_activity = 'com.example.game.MainActivity'

# 停止应用
d.stop_app(package_name)  # 仅停止
d.stop_app(package_name, clear=True)  # 停止并清除数据(仅Android)

# 启动应用
d.start_app(package_name, main_activity)  # 推荐方式
d.start_app(package_name, main_activity, stop=True)  # 强制停止后启动
d.start_app(package_name)  # 使用monkey启动(不推荐)

ADB命令执行

ATX封装了常用的ADB操作:

# 执行ADB命令
d.adb_cmd(['pull', '/data/local/tmp/hi.txt'])  # 默认30秒超时
d.adb_shell(['uptime'])  # 执行shell命令

# 端口转发
host, port = d.forward(10080)  # 将设备10080端口转发到本地

# 获取设备信息
print(d.wlan_ip)  # 获取WLAN IP
print(d.current_app())  # 获取当前运行应用信息

对于更复杂的ADB操作,可以直接使用adb_client:

c = atx.adb_client
print(c.version())  # ADB版本
print(c.devices())  # 设备列表

图像识别与操作

基础图像操作

# 图像查找
if d.exists('button.png'):  # 判断图像是否存在
    print('图像找到')

# 截图保存
d.screenshot('screen.png')

# 坐标点击
d.click(50, 100)  # 绝对坐标
d.click(0.5, 0.5)  # 相对坐标(屏幕中心)
d.long_click(50, 100)  # 长按(仅Android)

高级图像操作

# 滑动操作
d.swipe(fromX, fromY, toX, toY, steps=100)  # 默认0.5秒完成
d.drag(fromX, fromY, toX, toY, steps=100)  # 长按后滑动

# 图像点击增强
d.click_image("button.png")  # 基础点击
d.click_image("button.png", safe=True)  # 安全模式(找不到不报错)
d.click_image("button.png", action='long_click')  # 长按点击
d.click_exists('button.png')  # 非等待式点击

多分辨率适配

ATX提供了智能的多分辨率适配方案:

# 自动适配不同分辨率
d.click_image("button@auto.png")  # 自动寻找合适分辨率的图片

# 支持的文件命名格式:
# button@1920x1080.png
# button.1920x1080.png
# button@1080x1920.png
# button.1080x1920.png

高级图像匹配功能

# 偏移量点击
d.click_image("button.R20T50.png")  # 向右20%,向上50%
# 等价于
d.click_image("button.png", offset=(0.2, -0.5))

# 完整参数示例
d.click_image("button.png", 
    offset=(0.2, 0.5), 
    action="long_click", 
    safe=True, 
    desc="操作描述", 
    method='template', 
    threshold=0.8,
    delay=2.0)

# 区域限定查找
nd = d.region(atx.Bounds(50, 50, 180, 300))  # 在指定区域内查找
print(nd.match('folder.png'))

性能优化技巧

# 屏幕锁定(减少重复截图)
d.keep_screen()
d.click_exists("button1.png")
d.click_exists("button2.png")
d.free_screen()

# 使用上下文管理器更优雅
with d.keep_screen():
    d.click_exists("button1.png")
    d.click_exists("button2.png")

# 图像等待
d.wait("button.png")  # 等待图像出现
d.wait_gone("button.png")  # 等待图像消失

原生UI操作

ATX支持直接操作UI元素:

# 组件点击
d(text='Enter').click()
d(text='Enter').sibling(className='android.widget.ImageView').click()  # 仅Android

# 文本输入
d.type("hello world")
d.type("atx", enter=True)  # 输入后按回车
d.type("atx", next=True)  # 输入后跳转到下一项
d.clear_text()  # 清空输入

# 简化输入操作
d.type("www.baidu.com", clear=True, resourceId="com.android.browser:id/url_bar")

配置管理

# 分辨率配置
d.resolution = (1920, 1080)  # 设置截图参考分辨率

# 截图方法配置
d.screenshot_method = atx.SCREENSHOT_METHOD_AUTO  # 自动选择(默认)
d.screenshot_method = atx.SCREENSHOT_METHOD_UIAUTOMATOR  # 使用UIAutomator
d.screenshot_method = atx.SCREENSHOT_METHOD_MINICAP  # 使用Minicap

# 图像匹配配置
d.image_match_method = atx.IMAGE_MATCH_METHOD_TMPL  # 模板匹配(默认)
d.image_match_method = atx.IMAGE_MATCH_METHOD_SIFT  # 特征点匹配
d.image_match_threshold = 0.8  # 匹配阈值

# 屏幕方向配置
d.rotation = None  # 自动检测(默认)
# 0: Home键在下(正常)
# 1: Home键在右
# 2: Home键在上
# 3: Home键在左

事件监听

def my_listener(event):
    print('事件:', event)

d.add_listener(my_listener, atx.EVENT_SCREENSHOT)
d.screenshot()  # 触发事件

底层接口访问

ATX底层整合了多个强大的自动化库:

# Android底层操作
d.uiautomator  # 访问atx-uiautomator库的所有功能

# iOS底层操作
d.session  # 访问facebook-wda库的Session对象
d.session.window_size()  # 获取屏幕尺寸

总结

本文详细介绍了ATX自动化测试框架的核心API使用方法,从设备连接、应用管理到图像识别、UI操作等各个方面。掌握这些API可以帮助开发者构建稳定、高效的自动化测试脚本。ATX框架设计精良,既提供了简单易用的高级接口,也保留了访问底层功能的灵活性,是移动端自动化测试的优秀选择。

【免费下载链接】ATX Smart phone automation tool. Support iOS, Android, WebApp and game. 【免费下载链接】ATX 项目地址: https://gitcode.com/gh_mirrors/at/ATX

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值