跳过内容

检索事件时间

Appium 具有检索有关启动信息和命令长度的时间信息的能力。这是一项高级功能,由使用 appium:eventTimings 功能控制(将其设置为 true 以记录事件时间)。

启用此功能后,GET /session/:id 响应(即对 driver.getSessionDetails() 或类似响应,具体取决于客户端)将使用 events 属性进行修饰。这是该 events 属性的结构

{
    "<event_type>": [<occurence_timestamp_1>, ...],
    "commands": [
        {
            "cmd": "<command_name>",
            "startTime": <js_timestamp>,
            "endTime": <js_timestamp>
        },
        ...
    ]
}

换句话说,events 属性有 2 种自己的属性

  • 属性是事件类型的名称
  • commands 属性

事件类型名称的属性对应于该事件发生时的戳记数组。它是一个数组,因为事件可能在会话过程中多次发生。事件类型的示例包括

  • newSessionRequested
  • newSessionStarted

(各个驱动程序将定义自己的事件类型,因此我们这里没有详尽的列表可供分享。最好从真实会话中实际获取其中一个响应来检查可能的事件类型。)

commands 属性是一个对象数组。每个对象都有 Appium 内部命令的名称(例如 click),以及命令开始处理的时间和完成处理的时间。

借助这些数据,您可以计算事件之间的时间,或严格的事件时间表,或有关特定类型命令的平均长度的统计信息,等等。

您只能接收在调用 /session/:id 时发生的事件的数据,因此获取整个会话数据的最佳时间是在退出会话之前。

Appium 团队维护了一个事件计时解析器工具,该工具可用于从事件计时输出生成各种类型的报告:appium/appium-event-parser

添加自定义事件

待办事项

由于这些文档仍在构建中,因此以下段落中指向命令的链接尚不起作用。

您可以添加将在事件计时数据中显示的自定义事件。您可以使用 日志事件 API 向 Appium 服务器发送自定义事件名称,服务器将存储时间戳。稍后可以使用 获取事件 命令来检索已命名事件的时间戳。