Airtest测试fastlink加载速度变化

452 阅读3分钟

一、介绍

airtest:

Airtest是一款跨平台的UI自动化测试框架,基于 图像识别原理 ,适用于游戏和App

fastlink:

可以在空闲时间预获取页面可视区域内的链接,加快后续加载速度。

开发原因:

fastlink能提升页面加载速度,而Airtest可以通过脚本进行自动化测试,通过Airtest测试fastlink的加载效率

二、接入

fastlink接入

在js中引用fastlink

<script type="text/javascript" src="https://woxin2.jx139.com/comm/fastlink/dist/fastlink.js"></script>

在onLoad生命周期中添加方法

listen()

三、airtest

安装与介绍

下载地址
安装介绍 blog.csdn.net/qq_32557025…

airtestIDE使用

打开AirtestIDE(会打开一个命令窗口,命令窗口不要手动关闭,否则IDE也会关闭)

连接手机

通过手机设置,打开开发者模式(开发者模式正常情况下是隐藏的,在设备信息界面的系统信息界面连续点击,比如小米手机为连续点击MIUI版本) 开启之后在开发者设置中打开USB调试和USB调试(安全设置)(允许通过USB模拟点击,否则脚本无法点击手机屏幕),没有安全设置则无需开启。 d7d89057317f2534ecf126bc7bf6629.jpg 然后通过数据线连接电脑,在Airtest中右侧的设备窗中刷新ADB,会出现设备序列号,点击connect进行连接,连接之后会出现手机屏幕,可以通过手机屏幕操作手机(如果未开启允许USB模拟点击则无法进行操作)。

image.png

新建脚本

点击左上角的加号,选择.air Airtest项目,会新建一个具有简单模板的.air文件。 在IDE左下角Poco辅助窗中,在下拉框中选择Android,然后在脚本编辑窗中点击Yes,会自动引入poco框架。 image.png 微信截图_20230111162909.png

编写脚本

在Airtest辅助窗中有多种指令,介绍几种常用指令。
1.touch
touch为点击屏幕,在辅助窗中使用touch可以在手机设备上进行截图,并且会在编辑窗中完善代码

image.png
2.swipe
swipe为屏幕滑动,可配合for循环进行多次滑动,通过start和end的方向进行,横向或者竖向滑动

# 获取设备的高度和宽度
width, height = device().get_current_resolution()
# 校准滑动的起点和终点,因为大部分app上下有底栏和顶部导航,不在滑动范围,所以这里的height不是从0.1开始
start_pt1 = (width / 2,height * 0.7)
end_pt1 = (width / 2,height * 0.3)
# 上滑N次:
for i in range(4):
    swipe(start_pt1, end_pt1,1000)
    sleep(1)  # 等待设备的响应

3.wait
wait为等待某个时间出现,可以用于轮播图,等待自动轮播到想要点击的界面再进行touch点击,或者配合滑动使用,滑动到指定位置再进行其他操作

image.png
4.exists
exists用于判断某个场景是否存在,再进行其他操作

微信截图_20230111162957.png
5.sleep
sleep是脚本停止并停止方法设定的时间再往下执行,可用于等待页面加载。

# 上滑N次:
for i in range(4):
    swipe(start_pt1, end_pt1,1000)
    sleep(1)  # 等待设备的响应

日志添加

在h5页面接入fastlink之后,在需要跳转的按钮上添加开始时间日志,并且在onShow/onReady中添加结束时间日志, 最后再计算页面打开耗时,因为fastlink是把可视界面内的按钮预加载,所以在跳转之前脚本最好进行sleep一定时间,在进行跳转

console.log("start:" + currentTime())

···

function currentTime() {
	var now = new Date();
	var year = now.getFullYear();       //年
	var month = now.getMonth() + 1;     //月
	var day = now.getDate();            //日

	var hh = now.getHours();            //时
	var mm = now.getMinutes();          //分
	var ss = now.getSeconds();         //秒
	var mill = now.getMilliseconds();

	var clock = year + "-";

	if (month < 10)
		clock += "0";

	clock += month + "-";

	if (day < 10)
		clock += "0";

	clock += day + " ";

	if (hh < 10)
		clock += "0";

	clock += hh + ":";

	if (mm < 10) clock += '0';

	clock += mm;
	clock += ":" + ss;
	clock += ":" + mill;

	return (clock);
}

运行

点击工具栏的运行按钮运行脚本,也可以在脚本编辑框中选中要运行的代码右键,只运行选中的代码进行测试 image.png image.png

测试结果

拿了四个页面做测试,各做了10次测试。

image.png