Xcode経由でのiOSの自動化
1. はじめに
T-Plan Robot Enterprise バージョン4.2以降は、Xcode 7(Mac OS X)経由でのiOS 9デバイスの自動化をサポートしています。主な機能:
-
Lightning USBインターフェースを備えたすべてのデバイスがサポートされます。シミュレータはサポートされていません。
-
jailbreakなしで、(T-Plan Application経由での)iOSの完全な制御が可能です。
-
テスト対象アプリケーションの変更は不要です。
この接続はiOS Mirror接続より低速であるため、ゲームなどリアルタイム制御を必要とするアプリケーションのテストには適していません。代わりにiOS Mirror接続を使用してください。
2. セットアップ
-
Mac OS X上にRobotをインストールします。
-
Lightning USBケーブルでiOSデバイスをMacマシンに接続します。
-
Mac OS XにXcode 7をインストールするか、すでにインストールされている場合は最新の状態になっていることを確認します。
-
Xcodeを起動し、Window -> Devicesを選択します。そこにお使いのデバイスが表示されていることを確認してください。この手順により、デバイスが開発用に有効化されます。デバイスを再起動するたびに、この手順を繰り返す必要があります。この手順の後、Xcodeを閉じても構いません。接続を成功させるためにXcodeを起動しておく必要はありません。
-
Robotを起動し、"iOS Over Xcode"接続を選択します。この接続には2つのパラメータが必要です:
-
Device name。名前を取得するには、デバイスのSettings -> General -> About -> Nameに移動します。または、"..."ボタンをクリックして、接続されているデバイスの一覧を取得することもできます。
-
Application path。Mac OS Xのファイルシステムに保存された、.ipaファイル(Ad-HocまたはEnterpriseアプリ)、または.appフォルダ(解凍済みの.ipa)のいずれかである必要があります。
注: この接続にはローカルに保存されたiOSアプリケーションが必要ですが、iOSデバイスにアプリをインストールすることはありません。事前にインストールしておく必要があります。ローカルコピーは、アプリケーションのプロパティと署名を検証するために使用されます。デバイスにインストールされているものと同じアプリビルド(バージョン)である必要すらありません。
接続の機能は、指定するアプリケーションによって異なります:-
自分のアプリケーションを指定すると、接続はapplication modeで動作します。アプリケーションはデバイス上で自動的に起動され、それを自動化できます。Home画面に切り替えたり、iOS自体や他のアプリケーションを制御したりすることはできません。
-
full iOS control modeを有効にするには、TPlanApp.ipaファイルを指定します。インストール方法の詳細は、次の章を参照してください。アプリケーションは起動された後、短い遅延を経てHome画面を表示するために一時停止(サスペンド)されます。その後は、任意のiOSコンポーネントや他のアプリケーションを自由に自動化できます。
-
-
-
iOSデバイスがロックされていない、またはスリープモードになっていないことを確認してください。Connectを選択して接続を確立します。
3. T-Plan Applicationのインストール
T-Plan Applicationは、iOSの完全な制御を実現するためのフレームワークを提供します。このアプリケーションはお客様の証明書チェーンで署名する必要があるため、当社はこれをXcodeプロジェクトとして配布しています。Xcode上でコンパイルし、対象デバイスにインストールして、.ipaファイルを作成する必要があります。これは一度限りのプロセスであり、約10分かかります。
要件:
-
Xcodeがインストールされ、最新の状態であり、有効なApple Developerアカウント(一致するプロビジョニングプロファイル、有効な証明書チェーン)で設定されていること。
-
iOSデバイスがLightning USBケーブルでMacマシンに接続されており、Xcodeに認識されていること(Window -> Devicesに一覧表示されていること)。
手順1: アプリケーションプロジェクトのアーカイブをダウンロードします。DMGをダブルクリックしてマウントします。Finderを開き、"TPlanApp"ドライブから、Mac OS X上のフォルダにプロジェクトをコピーします。
手順2: Xcodeでアプリをビルドし、デバイスにインストールします:
-
Xcodeを起動します。ウェルカム画面で"Open another project"をクリックし、アプリフォルダからTPlanApp.xcodeprojファイルを選択します。
-
active schemeをお使いのデバイス名に設定します。
-
Runボタンを選択します。これにより、アプリケーションがコンパイルされ、デバイスにインストールされて起動します。アプリケーションは一瞬表示された後、消えます(サスペンド)。これは想定された動作です。
手順3: IPAビルドを作成します
-
XcodeのメインメニューでProduct -> Archiveを選択します。
-
Archivesウィンドウがポップアップ表示されます。Export...ボタンをクリックします。
-
"Save for Ad-Hoc Deployment"オプションを選択します。
-
プロビジョニングとデバイスサポートはデフォルトのままにします。最終的にXcodeは、TPlanApp.ipaファイルを含むフォルダをデスクトップに保存します。
-
Xcodeを閉じます。以降は不要です。
4. トラブルシューティング
-
iOSデバイスに付属していた純正のLightning USBケーブルを使用してください。Appleは、他社製ケーブルをiOSが拒否するよう仕様を定めていることで知られています。
-
ケーブルはMacのUSBポートに直接接続してください。USBスイッチやハブは使用しないでください。
-
Xcodeフレームワークが低速であるため、接続の開始にも時間がかかります。この点については当社では対応できません。
-
マウス(タッチスクリーン)またはキーボードイベントの適用には1~2秒かかります。これはXcodeフレームワークの制限によるものです。
5. 自動化
テストスクリプトからiOSデバイスに接続するには、Connectコマンド(TPRスクリプト)またはconnect()メソッド(Javaテストスクリプト)を使用します。引数のURLは"xcode://localhost"の形式である必要があります。
例えば、以下のコマンド/メソッド呼び出しは、最初に検出されたデバイスに接続します:
TPRテストスクリプト: Connect xcode://localhost device="My iPhone" app="/Users/Joe/myapp.ipa"
Javaテストスクリプト: connect("My iPhone", new File("/Users/Joe/myapp.ipa"), false, false);
別の方法として、パラメータを接続URLのクエリにエンコードすることもできます。この形式は、c/-connect CLI接続にも適しています。最近の接続のURLは、Tools->CLI Wizardウィンドウからコピーできます。さらに別の方法として、Desktop->Connection Managerウィンドウで接続に名前を付け、URLの代わりにその名前を使用することもできます。
TPRテストスクリプト: Connect "xcode://localhost?device=My%20iPhone&app=/Users/Joe/myapp.ipa"
タッチスクリーンのサポート
マウスクリックとドラッグは、タッチスクリーンのタップとスワイプにマッピングされます。マウスホイールイベントはサポートされておらず、無視されます。
キーボードのサポート
ハードウェアキーのマッピング:
|
iOSハードウェアキー |
Robotスクリプトキー(アクション) |
説明 |
|---|---|---|
|
HOME |
Home、右クリック |
Homeキー。このキーはT-Plan Application経由でエミュレートされ、application modeでは使用できません。Homeキーの2回押しはサポートされていません。 |
キーはソフトキーボードを通じてシミュレートされます。このため、この接続は現在表示されているキーボード上にあるキーのみをサポートします。
-
デバイスが縦向きモードの場合、一部のキーが使用できないことがあります。例えば、iPhoneでは、キーボードが「Hide keyboard」キーを横向きモードのみに含んでいるため、縦向きモードではこのキーを押すことができません。
-
キーボードのキーは、内部的に名前で識別されます。ローカライズされた名前を持つキー(名前は選択された言語によって異なります)があるため、英語以外のキーボードでは一部のキーが失敗することがあります。お使いのキーボードの完全なサポートが必要な場合は、T-Planサポートまでお問い合わせください。
-
長押しで表示される一覧内の追加キーはサポートされていません。
-
複数のキーボードがあり、別のキーボード上のキーを押したい場合は、まずTabを押してそのキーボードに切り替える必要があります。
-
絵文字キーボードはサポートされていません。回避策として、マウスクリックを使用して自動化してください。
以下はソフトキーボードのマッピングです。赤いアスタリスクが付いたキーの可用性は、デバイスの種類や画面の向きによって異なる場合があります。
|
iOSキーボードキー |
Robotスクリプトキー(アクション) |
説明 |
|---|---|---|
|
ENTER, GO |
Enter(改行) |
Enterキー。 |
|
NEXT KEYBOARD |
Tab |
Next Keyboardキーは、キーボードレイアウトを切り替えます。 |
|
DELETE |
Backspace, Delete |
Backspaceキー。挿入位置より前の文字を削除します。 |
|
HIDE KEYBOARD* |
Esc |
キーボードを非表示にします。 |
|
RIGHT* |
Right |
右矢印ボタンは、次の文字に移動します。 |
|
LEFT* |
Left |
左矢印ボタンは、前の文字に移動します。 |
|
UNDO* |
Ctrl+Z |
入力したテキストを取り消します。 |
|
EMOJI KEYBOARD* |
Ctrl+E |
絵文字キーボードに切り替えます。切り替え後は、マウス(タッチスクリーン)で操作する必要があります。マウスを使ってキーボードを元に戻すまで、キー入力は無効になります。 |