一、Airtest基本原理
二、windows应用程序测试
1. 需求分析与预期效果
·点击未登录,跳出扫码登录窗口
·点击选择其它登录方式
·点击同意《服务条款》《隐私政策》《儿童隐私政策》前面的小框框,勾选上
·点击登录
·当出现手机号或密码错误红字警告时,将手机号文本框和密码文本框中内容全选,清空
·从txt文件中导入第二条预期登录成功测试用例,分别输入到手机号文本框和密码文本框
·点击登录
·登录成功后
·点击网易云音乐中音乐搜索框,搜索“江南”
·点击江南
·右键将歌曲收藏到指定歌单中
·打开歌单,查看歌曲是否成功添加
·播放歌单中歌曲
2. 在AirtestIDE中连接Windows窗口
要使用AirtestIDE测试某个Windows程序,首先要将待测试的Windows窗口与AirtestIDE进行连接,其实也就是将Windows窗口的句柄告诉给AirtestIDE。在成功连接窗口后,Airtest能够将该窗口作为一个设备,接下来就像在操作一台Android设备一样,能够对Windows窗口进行图像识别、点击操作等。
因为测试网易云登录功能时,需要打开多个窗口,所以采用Windows窗口连接中的桌面模式。
连接注意事项:
在此模式下,与选择窗口不同,Airtest图像识别到的是整个桌面,所以Airtest工具可能会误识别到AirtestIDE代码中的截图语句,故要将AirtestIDE中脚本编辑框切换为代码模式。
3. 测试用例的编写
本次实验测试用例针对网易云音乐登录,设计了一组登录成功用例和一组登录失败用例,都放在了loginTest.txt里。
13270976346,tjm981130。
13270976346,tjm971130。
4. 编写Airtest脚本
测试脚本如下:
# -*- encoding=utf8 -*-
__author__ = "admin"
from airtest.core.api import *
auto_setup(__file__)
#搜索音乐的案例
#读取测试用例
with open("D:\\Airtest_Test\\loginTest.txt",encoding='utf-8') as f:
content=f.readlines()
data_list=[]
for line in content:
data_list.append([str(line.split(",")[0]),str(line.split(",")[1])])
#登录
touch(Template(r"tpl1608983218414.png", record_pos=(0.299, -0.266), resolution=(1920, 1080)))
touch(Template(r"tpl1609035178281.png", record_pos=(-0.001, 0.093), resolution=(1920, 1080)))
sleep(1)
touch(Template(r"tpl1608981293166.png", record_pos=(-0.072, 0.104), resolution=(1920, 1080)))
def input_pwd(index):
touch(Template(r"tpl1608981390693.png", record_pos=(0.022, -0.036), resolution=(1920, 1080)))
accountstr=data_list[index][0]
print(accountstr)
text(str(accountstr))
sleep(1)
touch(Template(r"tpl1608981404680.png", record_pos=(-0.024, -0.017), resolution=(1920, 1080)))
password=data_list[index][1]
print(password)
text(str(password))
sleep(1)
touch(Template(r"tpl1608981588454.png", record_pos=(0.003, 0.025), resolution=(1920, 1080)))
for index in range(0,2):
if(exists(Template(r"tpl1608983376213.png", record_pos=(-0.265, -0.065), resolution=(1920, 1080)))):
touch(Template(r"tpl1608983415046.png", record_pos=(-0.282, -0.106), resolution=(1920, 1080)))
keyevent("^a")
keyevent("{DEL}")
touch(Template(r"tpl1608984487238.png", record_pos=(-0.043, -0.016), resolution=(1920, 1080)))
keyevent("^a")
keyevent("{DEL}")
input_pwd(index)
#搜索音乐
sleep(2)
touch(Template(r"tpl1608982011365.png", record_pos=(-0.305, -0.266), resolution=(1920, 1080)))
text("江南")
#touch(Template(r"tpl1608982102725.png", record_pos=(-0.326, -0.236), resolution=(1920, 1080)))
#enter键搜索
keyevent("{ENTER}")
sleep(1)
touch(Template(r"tpl1609040382463.png", record_pos=(-0.237, -0.106), resolution=(1920, 1080)))
# 获取当前连接的窗口
dev = device()
# 拿到鼠标,并模拟鼠标的右键点击操作
dev.mouse.right_click( (504, 336))
sleep(3)
#将歌曲添加到指定歌单
keyevent("^s")
touch(Template(r"tpl1609042019881.png", record_pos=(-0.059, 0.046), resolution=(1920, 1080)))
sleep(3)
#去歌单中查看歌曲是否被添加成功,并播放歌单
touch(Template(r"tpl1609040760016.png", record_pos=(-0.454, 0.052), resolution=(1920, 1080)))
touch(Template(r"tpl1609043299145.png", record_pos=(-0.245, -0.184), resolution=(1920, 1080)))
脚本编写注意事项:
在 keyevent()中不使用 {} 框起来的字符,都会被当成需要输入的字符串,被输入到Windows窗口的输入框上。
常用sleep(),给服务器反应时间。
windows上模拟键盘与鼠标操作与安卓端有些不同,具体在官方Windows平台api文档中查看。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理