巴黎的灯光下 发表于 2017-6-26 13:47:52

用 appium 获取页面加载时间,几个问题请教大家

目前在自己的产品和竞品上,使用appium来获取页面加载时间,想法很简单,就是点击入口元素,埋点,然后定位一个目标元素再埋点,通过两个埋点时间差来计算页面加载时间。
现在做下来发现做出的时间比实际时间要长比较多,研究了下,大概有2个原因:

1.页面dump时间无法省去
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;
}


草帽路飞UU 发表于 2017-6-26 14:56:50

你这是在case里面埋点吧。应该在app的源码里埋点。

八戒你干嘛 发表于 2017-6-26 14:57:36

H5是不是可以在JS里面埋点?重写部分LOAD?WEBVIEW应该是可以从CONSOLE LOG取日志的。可能需要同时修改H5和手机端的代码。
没试过。。。要不你试试看呢?~不动源码的话,个人感觉都不怎么靠谱。
PS:要求不高的话,拿个秒表掐掐算了。。。网络条件不一样,时间也会不同么。。。~~~

悠悠小仙仙 发表于 2017-6-26 14:59:41

秒表时间误差还是存在,换录像数帧吧_^

乐哈哈yoyo 发表于 2017-6-26 15:05:36

GT应该可以
页: [1]
查看完整版本: 用 appium 获取页面加载时间,几个问题请教大家