Appiumの統合

Appiumとの統合により、OpenText Functional Testing Labの機能を利用してAppiumスクリプトを実行できます。

Visual Studioの構成

Visual Studioを使用する場合は、Appiumプロジェクトを認識するように環境を構成します。

Visual Studio環境をAppiumでセットアップするには、次の手順に従います。

  1. Visual Studioで新しい単体テストプロジェクトを作成します。
  2. ソリューションエクスプローラーで [参照] を右クリックし、[NuGetパッケージの管理] を選択します。
  3. 「Appium Webdriver」を検索し、Installをクリックします。これにより、参照が更新され、Appiumドライバーが含まれるようになります。
  4. 「Selenium WebDriver」を検索し、Installをクリックします。これにより、参照が更新され、Seleniumドライバーが含まれるようになります。
  5. Appium Webドライバーをインスタンス化します。
  6. Appium機能の説明に従って、必要な機能を設定します。

トップに戻る

Eclipseの設定

Eclipseを使用する場合は、Appiumプロジェクトを認識するように環境を構成します。

Eclipse環境を設定するには、以下の手順に従ってください。

  1. 以下の最新のアーカイブファイルをダウンロードします。

    1. Selenium WebDriver Javaクライアント

    2. Appium Mobile WebDriver用Javaクライアント

  2. ダウンロードしたアーカイブファイルの内容を抽出します。
  3. Eclipseで、Appiumプロジェクトを選択し、右クリックメニューからSelect Propertiesを選択します。
  4. Java Build Pathノードをクリックし、Librariesタブを選択します。
  5. Add External JARsをクリックし、ダウンロードしたjarを1つずつ追加します。

    1. Selenium Javaクライアントのダウンロードから抽出されたJava-client jarファイル

    2. 抽出されたSeleniumクライアントのダウンロードのlibsフォルダーにあるjarファイル

    3. Java-Client for Appiumのダウンロードから抽出したJava-client jarファイル

  6. 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
  1. Windowsの信頼されたルート証明機関に証明書をインストールします。

  2. Appium Inspectorの [Advanced Settings] で [Allow Unauthorized Certificate] を選択します。

その他

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テストからテストステータスを報告するには、属性statuscommentを持つマップ (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プラグインを参照してください。

トップに戻る

その他の参照項目: