目前在自己的产品和竞品上,使用 appium 来获取页面加载时间,想法很简单,就是点击入口元素,埋点,然后定位一个目标元素再埋点,通过两个埋点时间差来计算页面加载时间。
现在做下来发现做出的时间比实际时间要长比较多,研究了下,大概有 2 个原因:
其中第一个问题,暂时没有比较好的解决方法,不知道大家有没有什么建议?
第二个问题,现在的想法是更改 uiautomator 的源码来解决,可以看到下面的源码中,在查找匹配元素的时候,每次找不到会有个固定等待时间,这个值默认是 1s
但是第二个问题来了,改完以后,怎么打 uiautomator.jar 包。。。
protected AccessibilityNodeInfo findAccessibilityNodeInfo(long timeout) {
AccessibilityNodeInfo node = null;
long startMills = SystemClock.uptimeMillis();
long currentMills = 0;
while (currentMills <= timeout) {
node = getQueryController().findAccessibilityNodeInfo(getSelector());
if (node != null) {
break;
} else {
// does nothing if we're reentering another runWatchers()
UiDevice.getInstance().runWatchers();
}
currentMills = SystemClock.uptimeMillis() - startMills;
if(timeout > 0) {
SystemClock.sleep(WAIT_FOR_SELECTOR_POLL);
}
}
return node;
}