Appiumの統合
Appiumとの統合により、UFT Mobileの機能を利用してAppiumスクリプトを実行できます。
このトピックの内容:
- 環境を準備する
- Appiumテストを準備する
- Appiumスクリプトの実行
- SSLでAppiumを使用する
- Appiumセットアップコードスニペット
- 一般的なAppium API呼び出し
- Appiumログを取得する
- 並列テスト
環境を準備する
自動化されたAppiumテストを実行するための環境を準備するには、Appiumプロジェクトを認識するようにVisual StudioやEclipseなどの作業環境を構成する必要があります。
Appiumテストを準備する
UFT Mobileで実行するAppiumテストを準備するには:
-
セッションを開始するコードで、AppiumサーバーのURLとポートをUFT MobileのURLとポートに次の形式で置き換えます(例については以下を参照)。
driver = new AndroidDriver(new URL("http://<my UFT Mobile Server>:<port>/wd/hub"), capabilities);
driver = new IOSDriver(new URL("http://<my UFT Mobile Server>:<port>/wd/hub"), capabilities);
-
アプリをUFT Mobileにアップロードして、テストに利用できるようにします。詳細については、アプリの管理を参照してください。
注: iOSデバイスにアプリをインストールするのにMacマシンは必要ありません。
Appiumスクリプトの実行
Appiumテストを実行するときは、次のガイドラインを考慮する必要があります。
-
Appiumテストを匿名で実行すると、ユーザーはデフォルトのワークスペースに割り当てられます。詳しくはラボとワークスペースの管理をご覧ください。Appium匿名アクセスはLDAPではサポートされていないことに注意してください。
-
SafariドライバーはLinuxおよびWindowsではサポートされていません。
-
Node.jsのグローバルインストールは、Windows上のAppium V2ではサポートされていないため、Appium V2で実行されているテストは失敗します。
-
UFT MobileでAppiumテストを実行する場合、スクリプト実行時に使用する自動化の方法を指定できます。
iOS UFT Mobileは、Macマシンを必要とせずにiOSデバイスでテストを実行できます。iOSで使用されるデフォルトの自動化方法はXCUITestです。 UIAオートメーションを明示的に使用する場合は、automationName Appiumの機能をuiAutomationに設定してください。この機能は、iOSバージョン9.3から11.1でのみ使用できます。11.1以降のiOSバージョンでは、この機能はサポートされておらず、すべてのテストでXCUITestが使用されます。
Android OS 5.0以降 UiAutomator2はデフォルトの自動化エンジンです。uiautomator2ドライバーは、GoogleのUiAutomator2テクノロジーを使用して、デバイスまたはエミュレーターでの自動化を可能にします。デフォルトを上書きしてUiAutomator1を使用するには、automationName Appiumの機能を「android」に設定します。 Android OS <5.0 UiAutomator1( "android")は、Android OS <5.0のデフォルトです。自動化エンジンとして使用できるのはUiAutomator1のみです。
SSLでAppiumを使用する
SSLを使用してAppiumおよびUFT Mobileを操作するには、AppiumクライアントがUFTM証明書を信頼する必要があります。SSL証明書が有名な認証局によって署名されていない場合は、UFTM証明書をエクスポートして、それを信頼するようにAppiumクライアントを構成するか (推奨)、SSL警告を無視するようにクライアントを構成できます。証明書のエクスポートの詳細については、SSLと証明書の操作を参照してください。
Appiumセットアップコードスニペット
次のコードスニペットは、Androidネイティブアプリ、Chrome、iOSネイティブアプリ、iOS Safariのセットアップ例を示しています。太線は必須です。
UFT Mobileの共通機能とそのサポートのリストについては、UFT Mobile Appiumの機能を参照してください。
重要: これらのコードスニペットは、Java-Client v7.xを使用します。v8以降を使用する場合は、githubの公式Java-Client移行ガイドを参照してください。追加のコードサンプルについては、UFTM githubリポジトリを参照してください。
追加のコードサンプルについては、Appiumコード例 - JavaおよびAppiumシミュレーションを参照してください。
一般的なAppium API呼び出し
次のAppium API呼び出しを使用して、アプリを管理します。
Killアプリケーション
Kill API呼び出しは、アプリケーションを停止します。アプリを最小化するだけでなく、プロセスを終了します。スクリプト名はmc:application:killであり、次のいずれかの引数を使用する必要があります。
-
appPackage (Android) またはbundleId (iOS)
-
UFT MobileのREST APIリファレンスで使用されるidまたはuuid - アプリのインストール/アンインストール。
appPackage | Androidのみ。 アプリの詳細カードにパッケージIDと表示されているアプリを識別するパッケージ名。例: com.Advantage.aShopping |
bundleId | iOSのみ。 アプリの詳細カードにパッケージIDとして表示される一意の識別子であるアプリのバンドルID。例: com.mf.iShopping |
id | アプリケーション識別子 (文字列)。例: com.mf.iShopping |
uuid | ユニバーサル一意識別子 (UUID)。これは、UFT Mobileによって割り当てられた一意のアプリケーション固有のIDです。たとえば、「bf441f2b-3f16-4bb5-950d-4e3eaf2efffb」です。 |
次のサンプルコードは、Android Advantageアプリを終了します。
Map<String, Object> params = new HashMap<String, Object>();
params.put("appPackage", "com.Advantage.aShopping");
appiumDriver.executeScript("mc:application:kill", params);
「params.put」で始まる行は、次のオプションのいずれかに置き換えることができます。
-
params.put("bundleId", "com.mf.iShopping");
-
params.put("uuid", "bf441f2b-3f16-4bb5-950d-4e3eaf2efffb");
-
params.put("id", "com.Advantage.aShopping");
追加のコードサンプルについては、Appiumコード例 - JavaおよびAppiumシミュレーションを参照してください。
Network Virtualization機能
UFT Mobile内にNetwork Virtualization機能を追加する方法の例については、Network Virtualizationヘルプセンターを参照してください。
Appiumログを取得する
Appiumテストの実行中にログファイルが生成されます。
ログを取得するには、mc-wd:downloadLogsスクリプトを使用して、エンコーディングを指定します。
コネクターがこのコマンドを受信すると、現在のAppiumプロセスのすべてのセッションのログが取得されます。文字列を応答本文に添付します。
Appiumユーザーのテストコードは、応答本文の文字列を使用し、それに応じて処理します。
例:
HashMap<String, String> encoding= new HashMap<String, String>();
encoding.put("encoding", "UTF-8");
String logFileContents = (String) wd.executeScript("mc-wd: downloadLogs", encoding);
追加のコードサンプルについては、Appiumコード例 - JavaおよびAppiumシミュレーションを参照してください。
並列テスト
UFT Mobileで、AppiumとSeleniumのテストを並行して実行できます。
これは、コーディングするか、JenkinsなどのCI(継続的インテグレーション)ツールを使用して行うことができます。Jenkinsで並列テストを実行する方法の例については、Jenkins Wikiを参照してください。
その他の参照項目: