AirTest测试安卓端APP

这是我参与 8 月更文挑战的第 24 天,活动详情查看: 8月更文挑战

1 实验目的

使用AirTest对安卓端的APP做测试,本次实验针对的是微信APP。主要测试的部分有:1. 微信的循环登陆及退出;

2 实验过程及问题

(1)功能:

  • AccountPassword.txt来存储微信账号密码,在脚本中读取账号密码。通过airtest的一系统操作实现将文本中的账号密码一次读取登陆退出。

(2)测试用例:

  • 打开微信

  • 登录

    • 点击”更多”–>点击“登录其他账号”–>点击“用微信号/QQ号/邮箱登录”–>点击“请填写微信号/QQ号/邮箱”–>输入微信号–>点击“请填写密码”–>输入密码–>点击“登录“
  • 退出登录:

    • 点击“我”—>点击”设置“—>点击”退出登录“—>点击”退出”

循环登陆和退出登录

(3)脚本:

# -*- encoding=utf8 -*-
__author__ = "Administrator"

from airtest.core.api import *

auto_setup(__file__)

weixin='com.tencent.mm'  #微信的包名
#打印出设备所有的app信息
d=device()
all_device=d.list_app()  #获取手机上安装的所有APP
print(all_device)  

start_app(weixin) #打开微信

data_list=[]  #初始化列表,用来存储账号密码
with open("D:\AirTest\AirtestIDE-win-1.2.6\AirtestIDE\柳玥\AccountPassword.txt",encoding="utf-8") as f: # 打开存储账号密码的文件
    line=f.readline() #读取每一行
    while line:
        data_list.append([str(line.split(",")[0]),str(line.split(",")[1])]) #将账号和密码分隔出,存储在列表中
        line=f.readline()  #继续读取下一行

lenth=len(data_list)    #获取列表的长度即账号个数     

#循环实现每个账号的登录及退出
for i in range(lenth):      
    touch(Template(r"tpl1608962598683.png", threshold=0.8, record_pos=(0.198, 0.829), resolution=(1080, 1920)))  #点击更多
    sleep(2.0) #暂停2秒钟
    touch(Template(r"tpl1608952539463.png", threshold=0.8, record_pos=(0.006, 0.375), resolution=(1080, 1920)))  #点击登录其他账号
    sleep(2.0) #暂停2秒钟
    touch(Template(r"tpl1608952552826.png", threshold=0.8, record_pos=(-0.216, -0.085), resolution=(1080, 1920)))   #点击用微信号登录
    touch(Template(r"tpl1608952574389.png", threshold=0.8, record_pos=(0.045, -0.388), resolution=(1080, 1920)))   #获取输入账号框焦点
    accountstr=data_list[i][0]    #从列表中取出账号
    print(accountstr)      
    text(str(accountstr))  #输入账号
    
    touch(Template(r"tpl1608952675522.png", threshold=0.8, record_pos=(-0.086, -0.254), resolution=(1080, 1920)))   #获取输入密码框焦点
    password=data_list[0][1][0:-1]   #从列表中正确获取密码,截取掉最后一位
    print(password)
    text(str(password))   #输入密码 (默认点击enter)

    sleep(5.0)   #登录成功,停止五秒钟
    print("登录成功,暂停五秒钟后,准备退出!!!")

   #退出登录
    touch(Template(r"tpl1608972155552.png", threshold=0.8, record_pos=(0.374, 0.816), resolution=(1080, 1920))) #点击图标我
    touch(Template(r"tpl1608972235902.png", record_pos=(-0.32, 0.519), resolution=(1080, 1920)))  #点击设置图标
    swipe((500,800), vector=[0.0247, -0.2584]) #滑动,找到退出图标
    touch(Template(r"tpl1608972381879.png", threshold=0.8, record_pos=(0.004, 0.738), resolution=(1080, 1920))) #点击退出图标
    sleep(2.0) #暂停2秒钟
    touch(Template(r"tpl1608972398506.png", record_pos=(-0.001, 0.521), resolution=(1080, 1920)))  #点击退出登录
    sleep(2.0)  #暂停2秒钟
    touch(Template(r"tpl1608972411016.png", record_pos=(0.204, 0.173), resolution=(1080, 1920)))  #点击退出,确定退出登录
    sleep(5.0)

复制代码

(4)运行结果:

能依次读取AccountPassword.txt中的账号密码,循环登陆退出。

(5)实验过程中遇到的问题:

  • 用文件存储账号密码,由于格式是一行存储一个账户密码,在读取密码会比密码多出一位,所以在获取相应的密码时需要截取最后一个字符
  • 连续的touch操作,可能会产生错误,最后在touch后sleep几秒钟
  • 图像识别不准确,可以修改图片的匹配度,增大匹配度
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享