イベントタイミングの取得
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。
カスタムイベントの追加¶
TODO
次の段落のコマンドへのリンクはまだ機能していません。これらのドキュメントは作成中であるためです。
イベントタイミングデータに表示されるカスタムイベントを追加できます。ログイベントAPIを使用してカスタムイベント名をAppiumサーバーに送信すると、サーバーはタイムスタンプを保存します。後でイベントの取得コマンドを使用して、名前付きイベントのタイムスタンプを取得できます。