官方文档:https://developers.google.com/web/tools/chrome-devtools/network/reference#timing-explanation
- 录制,清空
- 时间线
- 蓝线:dom 加载完成
- 红线:所有资源加载完成
- 捕获:查看加载图片
- 根据 waterfall 排序 ,进行资源筛选
- shift 查看资源依赖关系
快捷键: ad左移和右移 ws放大和缩小
w3c:https://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface
appium自动化webview性能数据
from appium import webdriver
from selenium.webdriver.common.by import By
class TestWebview:
_package = "com.xueqiu.android"
_activity = ".view.WelcomeActivityAlias"
def test_webview(self):
caps = dict()
caps["platformName"] = "android"
caps["deviceName"] = "hogwarts"
caps["appPackage"] = self._package
caps["appActivity"] = self._activity
caps["noReset"] = True
# 需要对应版本的 chromedirver ,才能在 webview 中执行 js 代码
caps["chromedriverExecutable"] = "C:/develop/chromedriver/chromedriver2.20.exe"
# 初始化driver
self._driver = webdriver.Remote(
"http://localhost:4723/wd/hub",
caps)
self._driver.implicitly_wait(15)
# 进入到 webview
self._driver.find_element(By.XPATH, "//*[@text='交易']").click()
# 切换上下文到 webview
webview = self._driver.contexts[-1]
self._driver.switch_to.context(webview)
# 执行 js 代码,获取性能数据
all_time = self._driver.execute_script("return window.performance.timing")
# 对数据进行二次操作
response_time = all_time['responseEnd'] - all_time['responseStart']
print(response_time)
使用 adb shell 获取 cpu 使用率
while true;do adb shell top -n 1 | grep xueqiu | awk '{print $3}';done
cpu 使用率:
- 用户态:计算操作
- 内核态:I/O 操作 → 系统调用
作业
- 使用 chrome 函数调用图查看 https://ceshiren.com/ ,并给你的分析结果
- 使用 top 命令每隔 2 秒提取出 xueqiu app 的 VSS 数据