基于Python的Android自动化测试脚本
基于Python的Android自动化测试脚本由于工作需要,需要完成很多大量的重复工作去测试软件的性能问题,例如这次完成的人脸识别的优化,
为了测试效率和内存使用情况,需要不停的重复添加,选择,输入姓名,点击注册等等操作,虽然无脑,
但是做多了让人很头疼的。所以我写了下面这个脚本。
需求
首先我们需要明确下需求目标,我们的需求很简单,就是使用python脚本完成需要我们自己完成的很多
重复的操作,即便中间存在一定的重复操作之外,但是整体操作是完全重复和符合规则的。
设计思路
我的设计思路很简单,就是用Python使用 ADB 命令,模拟人为的点击输入等操作。
流程
1.进入主界面后,点击添加按钮
2.进入图片选择界面后判断是否要向下滑动
3.如果需要滑动 则滑动一定距离后再判断
4.顺序点击需要注册的图片
5.如果检测到有人脸,会弹出弹窗,则输入用户名,点击注册
6.如果未检测到人脸,点击重新选择按钮,重复操作。
实现
import os
import time
count_select = 0
count_swipe = 0
# 点击事件
def click(x, y):
cmd = "adb shell input tap {x1} {y1}".format(
x1=x,
y1=y
)
os.system(cmd)
# 添加点击事件 只在主界面时点击添加按钮进行人脸添加
def click_add():
click(1218, 30)
time.sleep(1)
swipe()
# 确认按钮添加,即在识别到人脸后,进行的操作
def click_ok():
click(400, 640)
# 睡眠2秒 防止添加人脸时进行比对的人脸过多导致的延迟等
time.sleep(2)
main()
# 点击重新注册
def click_re():
click(1152, 785)
time.sleep(1)# 等待一秒使图片加载完成
swipe()
# 输入用户名
def input_name():
os.system("adb shell input text 1")
click_ok()
# 点击相册中对应的图片进行注册操作
def click_register():
global count_swipe
global count_select
if count_select == 0:# 第一个
count_select = count_select + 1
click(160, 150)
elif count_select == 1:
count_select = count_select + 1
click(500, 150)
elif count_select == 2:
count_select = count_select + 1
click(810, 150)
elif count_select == 3:
count_select = count_select + 1
click(1125, 150)
elif count_select == 4:
count_select = count_select + 1
click(160, 475)
elif count_select == 5:
count_select = count_select + 1
click(500, 475)
elif count_select == 6:
count_select = count_select + 1
click(810, 475)
elif count_select == 7:
count_select = count_select + 1
click(1125, 475)
elif count_select == 8:
count_select = 0
count_swipe = count_swipe + 1
# 一屏幕结束,进行下一次循环操作
swipe()
if count_select != 0:
screen_xml()
# 滑动屏幕根据屏幕数判断需要滑动的次数
def swipe():
count_swipe_finish = count_swipe
if count_swipe_finish > 0:
for i in range(0, count_swipe_finish):# 循环滑动
os.system("adb shell input swipe 100 410 100 5")
click_register()
# 获取当前名目的所有控件布局 并写入到xml文件中
def screen_xml():
os.system("adb shell uiautomator dump /sdcard/ui.xml")
time.sleep(3)
read_xml()
# 读取xml文件,判断是否存在"重新选择"的按钮,如果不存在 则表明有人脸
def read_xml():
os.system("adb pull /sdcard/ui.xml .")
f = open("./ui.xml", "r", encoding="UTF-8")
s = f.read()
if s.find("id/res_tv_to_gallery") == -1:
print("有人脸")
input_name()
else:
print("无人脸")
click_re()
def main():
click_add()
main()
谢谢分享~ 用像素定位能准确么
页:
[1]