Appium フレームワークの原則とワークフロー

1. Appiumのフレームワーク原理

Appium は、モバイル オペレーティング システムに付属するテスト フレームワークに基づいて実装されます. Android および iOS システムで使用されるツールは次のとおりです。

Android 4.2以降はUIAutomatorフレームワークに基づいて検索インジェクションイベントが実装され、iOSはUIAutomation

Appium のアーキテクチャ原理を図に示します. クライアントとサーバーの 2 つの部分で構成されています. クライアントとサーバーは JSON Wire プロトコルを介して通信します:

Appium は、Android では UIAutomator に基づいてテスト エージェント (Bootstrap.jar) を実装し、iOS では UIAutomation に基づいてテスト エージェント (Bootstrap.js) を実装します。

テスト スクリプトが実行されると、webDriver スクリプトの各行が Appium 命令に変換され、Appium サーバーに送信されます。Appium サーバーはテスト命令をエージェント プログラムに渡し、エージェント プログラムはテストの実行を担当します。 . 例えば、スクリプト上のクリック操作は、Appium サーバー上のタッチ コマンドであり、コマンドが android システムに送信されると、Android システム上の Bootstrap.jar が UIAutomator のメソッドを呼び出してクリック操作を実現します。コマンドが iOS システムに送信されると、iOS Bootstrap.js は UIAutomation のメソッドを呼び出してクリック操作を実現します。このため、同じテスト スクリプトを実装して、Kuwa プラットフォームで実行できます。

2. Appiumのワークフロー

1. Appium-Android ワークフロー

Android 側では、Appium は WebDriver プロトコルに基づいて Bootstrap.jar を使用し、最終的に UiAutomator のコマンドを呼び出すことでアプリの自動テストを実現します。

1. Appium クライアントは、私たちが作成した webdriver テスト スクリプトです。

2. 真ん中にあるのは Appium サービスです. Appium はサーバー側でサーバー (ポート 4723) を起動します. Selenium Webdriver テスト フレームワークと同様に, Appium は標準の WebDriver JSONWireProtocol をサポートします. ここでは、一連の REST インターフェイスを提供します。Appium サーバーは、Web ドライバー クライアントの標準の REST リクエストを受け取り、リクエストの内容を解析し、対応するフレームワークのレスポンス操作を呼び出します。

3. Appium サーバーはリクエストを携帯電話にインストールされている Java で書かれたミドルウェア Bootstrap.jar に転送し、Bootstrap はポート 4724 をリッスンして Appium コマンドを受信し、最終的に UiAutomator コマンドを呼び出して実現します。

4. 最後に、Bootstrap が実行結果を Appium サーバーに返します。

5. Appium サーバーが結果を Appium クライアントに返す

2. Appium-iOS ワークフロー

iOS 側では、Appium は WebDriver の一連のプロトコルも使用します。Android のテスト フレームワークとは異なり、Appium ios は Apple の Instruments フレームワークをカプセル化し、主に Instrument の UIAutomation (Apple の自動テスト フレームワーク) を使用してから、bootstrap.js をデバイスに挿入して監視します。

1. Appium クライアントは、私たちが作成した webdriver テスト スクリプトです。

2. 真ん中にあるのは Appium サービスです. Appium はサーバー側でサーバー (ポート 4723) を起動します. Selenium Webdriver テスト フレームワークと同様に, Appium は標準の WebDriver JSONWireProtocol をサポートします. ここでは、一連の REST インターフェイスを提供します。Appium サーバーは、Web ドライバー クライアントの標準の REST リクエストを受け取り、リクエストの内容を解析し、対応するフレームワークのレスポンス操作を呼び出します。

3. Appium サーバーは、instruments.js を呼び出してソケット サーバーを起動すると同時に、instruments.app を実行する子プロセスを分離し、デバイスに bootstrap.js (UIAutomation スクリプト) を挿入して外部との対話を行います。

4. 最後に、Bootstrap.js が実行結果を Appium サーバーに返します。

5. Appium サーバーは結果を Appium クライアントに返します。

3. 重要な概念

(1) Appium サーバー: Appium サーバーは、Appium フレームワークのコアです。Node.jsをベースに実装されたHTTPサーバーです。Appium サーバーの主な機能は、Appium クライアントから開始された接続を受け入れ、クライアントから送信されたコマンドを監視し、実行のためにコマンドを bootstrap.jar (iOS 携帯電話の場合は bootstrap.js) に送信し、実行結果を返信することです。 Appium クライアントへの HTTP フィードバックを介したコマンドの。

(2) Bootstrap.jar: Bootstrap.jar は、Android フォンで実行されるアプリケーションであり、電話機の TCP サーバーとして機能します。Appium サーバーがコマンドを実行する必要がある場合、Appium サーバーは Bootstrap.jar との TCP 通信を確立し、コマンドを Bootstrap.jar に送信します; Bootstrap.jar はテスト コマンドの実行を担当します。

(3) Appium クライアント: 主に、Appium 機能を実装する WebDriver プロトコルのクライアント ライブラリを指し、Appium サーバーとの接続を確立し、テスト スクリプトの指示を Appium サーバーに送信します。既存のクライアント ライブラリは、Ruby、Python、Java、JavaScript (Node.js)、Object C、PHP、C# などの複数の言語で実装されています。Appium のテストは、これらのライブラリに基づいて開発されています。

(4) セッション: Appium のクライアントとサーバー間の通信は、セッションのコンテキストで実行する必要があります。クライアントが通信を開始すると、最初に「Desired Capabilities」という JSON オブジェクトがサーバーに送信されます。サーバーはデータを受信すると、セッションを作成し、セッション ID をクライアントに返します。その後、クライアントはセッション ID を使用して後続のコマンドを送信できます。

(5) Desired Capabilities: Desired Capabilities は、一連の設定のキーと値のペアのコレクションです。キーは設定の名前に対応し、値は設定の値に対応します。Desired Capabilities は主に、必要なセッションを確立するように Appium サーバーに通知するために使用されます。これらの設定の一部は、Appium の実行中に Appium サーバーの動作を変更できます。

おすすめ

転載: blog.csdn.net/yuan_ahui/article/details/127327520