自动化测试之Android测试脚本

首先交代本文测试脚本所用的自动化测试框架为Uiautomator2

一、连接设备

    def __init__(self):
        self.d = u2.connect("192.168.2.30")

这里用要连接的手机的IP

二、判断屏幕是否休眠,如果休眠要唤醒

        if self.d(resourceId="com.android.systemui:id/notification_stack_scroller").exists:  # 获取屏幕锁屏的状态属性
            print("处于锁屏状态")
            self.d.screen_on()  # 把屏幕唤醒
            sleep(1)
            self.d.swipe(500, 1600, 500, 200, 0.5)  # 滑动,for 0.5s(default)
            sleep(1)
        else:
            print("当前非锁屏状态")  # 当前非锁屏状态

以上代码是vivo手机锁屏状态的判断,具体手机型号请自己确定判断方法和解锁方式

三、安装apk

os.popen('adb install ' + apkDir)

apkDir为apk的路径,可为运行py文件时从外部传入,

python3 xxx.py apkDir

四、运行apk

经过前三步之后apk就安装上并自动打开了,然后就可以控制App运行了

主要方法有:

1.click(),比如这样,比较简单

self.d(resourceId="com.android.packageinstaller:id/ok_button").click()

2.App的上滑下滑

self.d.swipe(500, 1600, 500, 200, 0.5)  # 滑动,for 0.5s(default)

参数分别为开始点坐标和结束点坐标和滑动时间

execute(scrollable=True).scroll.toEnd()  # 向下滑动到最下面

3.返回

execute.press("back")

同理,传"home"为点击home键

4.输入

execute(text="请输入答案…").send_keys('自动化测试')

找到需要输入内容的EditText元素,send_keys

5.获取脚本运行异常log

print('脚本异常了')
test_status = 5
traceback.print_exc(file=open('/Users/xxx/Documents/logs/py_log.log', 'w'))

传入log输出的路径即可,当然要先引入traceback

import traceback

6.获取App运行log

import subprocess


# w写模式 每次写入新内容,原来的内容会被覆盖
# a追加模式 不清除原来内容,直接原来的基础上添加新数据
file = open('/Users/xxx/Documents/logs/alg_adb_log.log', 'w')
ps = subprocess.Popen('adb logcat | grep -i com.xxx.xxx', stderr=subprocess.PIPE,
stdout=file, shell=True)

传入输出路径和包名,即可获取App相关logcat

如果要获取crash日志,需要遍历logcat,找出Runtime异常

with open('/Users/xxx/Documents/logs/alg_adb_log.log', 'r', encoding='utf-8', errors='ignore') as f:
for line in f.readlines():
   if 'AndroidRuntime' in line:
        xxx            
   		break

你可能感兴趣的:(自动化测试)