Appiumの統合
Appiumとの統合により、OpenText Functional Testing Labの機能を利用してAppiumスクリプトを実行できます。
Visual Studioの構成
Visual Studioを使用する場合は、Appiumプロジェクトを認識するように環境を構成します。
Visual Studio環境をAppiumでセットアップするには、次の手順に従います。
- Visual Studioで新しい単体テストプロジェクトを作成します。
- ソリューションエクスプローラーで [参照] を右クリックし、[NuGetパッケージの管理] を選択します。
- 「Appium Webdriver」を検索し、Installをクリックします。これにより、参照が更新され、Appiumドライバーが含まれるようになります。
- 「Selenium WebDriver」を検索し、Installをクリックします。これにより、参照が更新され、Seleniumドライバーが含まれるようになります。
- Appium Webドライバーをインスタンス化します。
- Appium機能の説明に従って、必要な機能を設定します。
Eclipseの設定
Eclipseを使用する場合は、Appiumプロジェクトを認識するように環境を構成します。
Eclipse環境を設定するには、以下の手順に従ってください。
-
以下の最新のアーカイブファイルをダウンロードします。
-
Selenium WebDriver Javaクライアント
-
Appium Mobile WebDriver用Javaクライアント
-
- ダウンロードしたアーカイブファイルの内容を抽出します。
- Eclipseで、Appiumプロジェクトを選択し、右クリックメニューからSelect Propertiesを選択します。
- Java Build Pathノードをクリックし、Librariesタブを選択します。
-
Add External JARsをクリックし、ダウンロードしたjarを1つずつ追加します。
-
Selenium Javaクライアントのダウンロードから抽出されたJava-client jarファイル
-
抽出されたSeleniumクライアントのダウンロードのlibsフォルダーにあるjarファイル
-
Java-Client for Appiumのダウンロードから抽出したJava-client jarファイル
-
- OKをクリックして、プロパティダイアログボックスを閉じます。
Appiumテストを準備する
OpenText Functional Testing Labで実行するAppiumテストを準備するには:
-
セッションを開始するコードで、AppiumサーバーのURLとポートをOpenText Functional Testing LabのURLとポートに次の形式で置き換えます (例については以下を参照)。
driver = new AndroidDriver(new URL("http://<my OpenText Functional Testing Lab Server>:<port>/wd/hub"), capabilities);
driver = new IOSDriver(new URL("http://<my OpenText Functional Testing Lab Server>:<port>/wd/hub"), capabilities);
-
アプリをOpenText Functional Testing Labにアップロードして、テストに利用できるようにします。詳細については、アプリの管理を参照してください。
注: iOSデバイスにアプリをインストールするのにMacマシンは必要ありません。
Appiumスクリプトの実行
Appiumテストを実行するときは、次のガイドラインを考慮する必要があります。
-
SafariドライバーはLinuxおよびWindowsではサポートされていません。
-
OpenText Functional Testing LabでAppiumテストを実行する場合、スクリプト実行時に使用する自動化の方法を指定できます。
OS 詳細 iOS OpenText Functional Testing Labは、Macマシンを必要とせずにiOSデバイスでテストを実行できます。iOSで使用される自動化方法はXCUITestです。 Android 8以降 UiAutomator2はデフォルトの自動化エンジンです。uiautomator2ドライバーは、GoogleのUiAutomator2テクノロジーを使用して、デバイスまたはエミュレーターでの自動化を可能にします。デフォルトを上書きしてUiAutomator1を使用するには、automationName Appiumの機能を「android」に設定します。
SSLでAppiumを使用する
SSLを使用してAppiumおよびOpenText Functional Testing Labを操作するには、AppiumクライアントがOpenText Functional Testing Lab証明書を信頼する必要があります。
SSL証明書が既知の証明機関によって署名されていない場合は、次の手順を実行します。
Appiumクライアント | 手順 |
---|---|
Appium Inspector |
|
その他 |
OpenText Functional Testing Lab証明書をエクスポートし、それを信頼するようにAppiumクライアントを構成します (推奨)。あるいは、SSL警告を無視するようにクライアントを構成します。証明書のエクスポートの詳細については、SSLと証明書を参照してください。 |
Appiumセットアップコードスニペット
次のコードスニペットは、Androidネイティブアプリ、Chrome、iOSネイティブアプリ、iOS Safariのセットアップ例を示しています。太字の行は必須です。
OpenText Functional Testing Labの共通機能とそのサポートのリストについては、Appium機能を参照してください。
重要: これらのコードスニペットは、Java-Client v7.xを使用します。v8以降を使用する場合は、githubの公式Java-Client移行ガイドを参照してください。追加のコードサンプルについては、UFTM githubリポジトリを参照してください。
Androidネイティブ/ハイブリッドアプリ
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("oauthClientId", "oauth2-…");
capabilities.setCapability("oauthClientSecret", "ke1SUI…");
capabilities.setCapability("appPackage", "com.Advantage.aShopping");
capabilities.setCapability("appActivity", "com.Advantage.aShopping.SplashActivity");
Android Chromeブラウザー
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("oauthClientId", "oauth2-…");
capabilities.setCapability("oauthClientSecret", "ke1SUI…");
capabilities.setCapability("browserName", "chrome");
iOSネイティブ/ハイブリッドアプリ
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("oauthClientId", "oauth2-…");
capabilities.setCapability("oauthClientSecret", "ke1SUI…");
capabilities.setCapability("bundleId", "com.mf.iShopping");
iOS Safariブラウザー
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("oauthClientId", "oauth2-…");
capabilities.setCapability("oauthClientSecret", "ke1SUI…");
capabilities.setCapability("browserName", "safari");
追加のコードサンプルについては、Appiumコード例 - JavaおよびAppiumシミュレーションを参照してください。
一般的なAppium API呼び出し
次のAppium API呼び出しを使用して、アプリを管理します。
Killアプリケーション
Kill API呼び出しは、アプリケーションを停止します。アプリを最小化するだけでなく、プロセスを終了します。スクリプト名はmc:application:killであり、次のいずれかの引数を使用する必要があります。
-
appPackage (Android) またはbundleId (iOS)
-
REST APIリファレンスで使用されるidまたはuuid - アプリのインストール/アンインストール。
機能 | 詳細 |
---|---|
appPackage | Androidのみ。 アプリの詳細カードにパッケージIDと表示されているアプリを識別するパッケージ名。例: com.Advantage.aShopping |
bundleId | iOSのみ。 アプリの詳細カードにパッケージIDとして表示される一意の識別子であるアプリのバンドルID。例: com.mf.iShopping |
id | アプリケーション識別子 (文字列)。例: com.mf.iShopping |
uuid | ユニバーサル一意識別子 (UUID)。これは、OpenText Functional Testing Labによって割り当てられた一意のアプリケーション固有の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機能
OpenText Functional Testing Lab内にNetwork Virtualization機能を追加する方法の例については、Network Virtualizationヘルプセンターを参照してください。
テストステータスをラボに報告する
AppiumまたはSeleniumスクリプトからテストが成功したか失敗したかを報告できます。その後、ラボの [結果] タブでこれを表示できます。詳細については、テスト結果を参照してください。
AppiumまたはSeleniumテストからテストステータスを報告するには、属性statusとcommentを持つマップ (Java) または辞書 (C#) を定義します。テスト中にステータスとコメントを設定するには、executeScript APIを使用します。コメントには、テスト実行メッセージなど、テストの失敗に関連する情報を含めることができます。
Javaの例
Map<String, String> status = new HashMap<>();
status.put("status", status); //status can be "Passed" or "Failed"
status.put("comment", comment); //comments can be information relating to the failure, for example, the execution message.
wd.executeScript("FTLab:status", status);
C#の例
Dictionary<string, string> statusmap = new Dictionary<string, string>();
statusmap.Add("status", status); //status can be "Passed" or "Failed"
statusmap.Add("comment", comment); //comments can be information relating to the failure, for example, the execution message.
driver.ExecuteScript("FTLab:status", statusmap);
注: Android/iOSドライバーの作成が失敗すると、利用不可というステータスがラボに送信されます。
Appiumログのダウンロード
デバッグに役立つように、Appiumテストの実行中にログファイルが生成されます。ログファイルには、Appiumテストセッションログとデバイスログが含まれます。
ログを取得するには、FTLab-wd:downloadLogsスクリプトを使用して、エンコーディングを指定します。コネクターがこのコマンドを受信すると、現在のテストセッションのログが取得されます。
文字列を応答本文に添付します。Appiumユーザーのテストコードは、応答本文の文字列を使用し、それに応じて処理します。
例:
HashMap<String, String> encoding= new HashMap<String, String>();
encoding.put("encoding", "UTF-8");
String logFileContents = (String) wd.executeScript("FTLab-wd: downloadLogs", encoding);
ログファイルは、[結果] タブの [アーティファクト] セクションからダウンロードできます。詳細については、テスト結果を参照してください。
注:
-
Appiumバージョン1セッションの場合、ログファイルには、特定のAppiumテストセッションのログではなく、デバイスログとAppiumサーバーログ全体の両方が含まれます。
-
dl-wd:downloadLogsは下位互換性のために引き続きサポートされます。
追加のコードサンプルについては、Appiumコード例 - JavaおよびAppiumシミュレーションを参照してください。
並列テスト
OpenText Functional Testing Labで、AppiumとSeleniumのテストを並行して実行できます。
これは、コーディングするか、JenkinsなどのCI (継続的インテグレーション) ツールを使用して行うことができます。Jenkinsで並列テストを実行する方法の例については、Jenkins WikiのParallel Test Executorプラグインを参照してください。
その他の参照項目: