117 lines
2.7 KiB
Python
117 lines
2.7 KiB
Python
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
Android 模拟器图像识别测试脚本
|
|||
|
|
"""
|
|||
|
|
from airtest.core.api import *
|
|||
|
|
import sys
|
|||
|
|
|
|||
|
|
# 初始化设备连接
|
|||
|
|
def init_device():
|
|||
|
|
# 连接 Android 模拟器
|
|||
|
|
dev = connect_device("android://127.0.0.1:5037/emulator-5554")
|
|||
|
|
print(f"已连接设备: {dev}")
|
|||
|
|
return dev
|
|||
|
|
|
|||
|
|
# 截取当前屏幕
|
|||
|
|
def capture_screen(filename="screen.png"):
|
|||
|
|
dev = device()
|
|||
|
|
screen = dev.snapshot()
|
|||
|
|
|
|||
|
|
# numpy.ndarray 转换为 PIL Image 并保存
|
|||
|
|
from PIL import Image
|
|||
|
|
import numpy as np
|
|||
|
|
|
|||
|
|
img = Image.fromarray(screen)
|
|||
|
|
img.save(filename)
|
|||
|
|
print(f"截图已保存: {filename}")
|
|||
|
|
return screen
|
|||
|
|
|
|||
|
|
# 测试1: 打开相机应用
|
|||
|
|
def test_open_camera():
|
|||
|
|
print("测试1: 打开相机应用...")
|
|||
|
|
|
|||
|
|
# 使用 ADB 启动相机
|
|||
|
|
shell("am start -n com.inspection.camera/.ui.MainActivity")
|
|||
|
|
sleep(2)
|
|||
|
|
|
|||
|
|
# 截图
|
|||
|
|
capture_screen("test_open_camera.png")
|
|||
|
|
print("相机已打开")
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
# 测试2: 模拟点击屏幕中心(测试触摸功能)
|
|||
|
|
def test_touch():
|
|||
|
|
print("测试2: 测试触摸功能...")
|
|||
|
|
|
|||
|
|
# 点击屏幕中心
|
|||
|
|
touch([540, 960]) # 模拟器分辨率 1080x1920 的中心点
|
|||
|
|
sleep(1)
|
|||
|
|
|
|||
|
|
capture_screen("test_touch.png")
|
|||
|
|
print("触摸测试完成")
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
# 测试3: 滑动测试
|
|||
|
|
def test_swipe():
|
|||
|
|
print("测试3: 测试滑动功能...")
|
|||
|
|
|
|||
|
|
# 从上往下滑动
|
|||
|
|
swipe([540, 300], [540, 900])
|
|||
|
|
sleep(1)
|
|||
|
|
|
|||
|
|
capture_screen("test_swipe.png")
|
|||
|
|
print("滑动测试完成")
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
# 测试4: 查找屏幕上是否有特定文字(使用OCR)
|
|||
|
|
def test_ocr():
|
|||
|
|
print("测试4: OCR文字识别测试...")
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
from airtest.aircv import aircv
|
|||
|
|
import numpy as np
|
|||
|
|
|
|||
|
|
# 截图
|
|||
|
|
screen = device().snapshot()
|
|||
|
|
|
|||
|
|
# 使用 PIL 显示图像信息
|
|||
|
|
from PIL import Image
|
|||
|
|
img = Image.fromarray(screen)
|
|||
|
|
print(f"屏幕分辨率: {img.size}")
|
|||
|
|
print(f"屏幕模式: {img.mode}")
|
|||
|
|
|
|||
|
|
capture_screen("test_ocr.png")
|
|||
|
|
print("OCR 测试完成")
|
|||
|
|
return True
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"OCR测试出错: {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
# 主测试函数
|
|||
|
|
def main():
|
|||
|
|
print("=" * 50)
|
|||
|
|
print("Android 模拟器图像识别测试")
|
|||
|
|
print("=" * 50)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# 初始化设备
|
|||
|
|
init_device()
|
|||
|
|
|
|||
|
|
# 执行测试
|
|||
|
|
test_open_camera()
|
|||
|
|
test_touch()
|
|||
|
|
test_swipe()
|
|||
|
|
test_ocr()
|
|||
|
|
|
|||
|
|
print("\n" + "=" * 50)
|
|||
|
|
print("所有测试完成!")
|
|||
|
|
print("=" * 50)
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"测试出错: {e}")
|
|||
|
|
import traceback
|
|||
|
|
traceback.print_exc()
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|