Appiumの統合
Appiumとの統合により、OpenText Functional Testing Labの機能を利用してAppiumスクリプトを実行できます。
環境を準備する
自動化されたAppiumテストを実行するための環境を準備するには、Appiumプロジェクトを認識するようにVisual StudioやEclipseなどの作業環境を構成する必要があります。
Visual Studio環境をAppiumでセットアップするには、次の手順に従います。
- Visual Studioで新しい単体テストプロジェクトを作成します。
- ソリューションエクスプローラーで [参照] を右クリックし、[NuGetパッケージの管理] を選択します。
- 「Appium Webdriver」を検索し、Installをクリックします。これにより、参照が更新され、Appiumドライバーが含まれるようになります。
- 「Selenium WebDriver」を検索し、Installをクリックします。これにより、参照が更新され、Seleniumドライバーが含まれるようになります。
- Appium Webドライバーをインスタンス化します。
- 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リポジトリを参照してください。
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");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("oauthClientId", "oauth2-…");
capabilities.setCapability("oauthClientSecret", "ke1SUI…");
capabilities.setCapability("browserName", "chrome");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("oauthClientId", "oauth2-…");
capabilities.setCapability("oauthClientSecret", "ke1SUI…");
capabilities.setCapability("bundleId", "com.mf.iShopping");
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ログを取得する
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シミュレーションを参照してください。
並列テスト
OpenText Functional Testing Labで、AppiumとSeleniumのテストを並行して実行できます。
これは、コーディングするか、JenkinsなどのCI (継続的インテグレーション) ツールを使用して行うことができます。Jenkinsで並列テストを実行する方法の例については、Jenkins WikiのParallel Test Executorプラグインを参照してください。
その他の参照項目: