モバイル制御とタッチイベント
ADBCall()関数
例:
put ADBCall("devices") into ListOfDevices //adbデバイスコマンドのアウトプットを変数に保存します。
例:
put ADBCall("shell input keyevent 82") //keyevent 82をデバイスに送信します。
例:
put the second word of the connectionInfo's serverID into Device //adbシリアル番号を変数に保存します
delete "(" from Device //シリアル番号から丸括弧を削除し、adbcall()関数と一緒に利用できるようにします
delete ")" from Device
put adbcall (merge ("-s [[Device]] logcat -b events")) //merge関数を利用して、シルアル番号をadbコマンドストリングに代入します
パラメータ:関連パラメータの有無にかかわらず利用可能な、push、pull、shell、logcatなどのAndroid Debug Bridge(ADB)コマンドラインツールの呼び出し
挙動:この関数は、利用可能なAndroidデバイスに対してADB呼び出しを実行し、ADBコマンドから受け取ったアウトプットを返します。
Copy Fileコマンド
例:
copy file "/local/path/to/file" to "SUT:/remote/path/to/file" //SUTにファイルを送信します
例:
copy file "SUT:/remote/requested/file" to "/local/path/to/receive/file" //SUTからファイルを回収します
パラメータ:ソースファイルパスとコピー先のファイルパス
挙動:本コマンドは、ローカル機からSUTへ、またはSUTからローカル機へファイルをコピーします。パスの前に接頭辞SUT:をつけてSUTを指定します。このコマンドでは、SUT上のある場所から SUT上の別の場所へ、または別のSUTへファイルをコピーできない点に注意してください。Copy Fileは単一のファイルにのみ有効であり、フォルダのコピーはできません。
DoubleTapコマンド
例:
DoubleTap the remotescreensize/2 //画面中央でdoubletapコマンドを送信します。
例:
WaitFor 5, "FullsizeMap"
DoubleTap "BuildingIcon" //BuildingIcon画像の位置でdoubletapコマンドを送信します
WaitFor 5, "ZoomedMap"
パラメータ:オプションの1組の座標、画像またはテキスト(OCR)。
挙動:このコマンドは、現在の位置またはパラメータにより指定された位置のいずれかでダブルタップを実行します。このコマンドはDoubleClickコマンドと等価であり、モバイルデバイスで利用できます。モバイルデバイス上では一般的に、ダブルタップすると、アプリをズームすることができます。
挙動:DoubleTapコマンドにおけるタップ間のタイミングは、MouseDoubleClickDelayプロパティによって制御されます。MouseDoubleClickDelayを極端に長くすることで、DoubleTapを2つの異なるタップのように振る舞わせることができます。
例:
set the mousedoubleclickdelay to 1 //タップ間の間隔を1秒に設定します
doubletap "MapMarker" //MapMarker画像を1度タップして1秒待機し、その後再度MapMarker画像をタップします
ExecuteRemoteCommand()コマンドと関数
例:
ExecuteRemoteCommand("mkdir /data/local/tmp/TestDir") //Android上でシェルコマンド構文を利用し、デバイス上にディレクトリを作成します
例:
ExecuteRemoteCommand("UIATarget.localTarget().systemName()") // iOS 7および8のみで接続がアクティブなデバイスのシステム名を入手します。
例:
put ExecuteRemoteCommand("ls /data/local/tmp/; echo hello", waitFor:20) //セミコロンで区切った複数コマンドを渡し、それらのコマンドの結果を返します。
パラメータ:モバイルデバイスのSUT上で実行したいコマンド。
挙動:このExecuteRemoteCommand() コマンドおよび関数は、モバイルデバイスであるSUT上のコマンドを実行します。データを返したりするのにこのコマンドを利用できます。本コマンドは、同期(応答を待つ)または非同期(応答を待たない)コマンドのいずれかになります。コマンドを実行する方法は、モバイルOSに応じて以下のように異なります。
- Androidでは、実際のスマートフォン上でExecuteRemoteCommandがシェルコマンドとして実行されます。
- iOSでは、ExecuteRemoteCommandがJavaScriptとしてコマンドを実行し、Apple UIAutomation APIを呼び出します。
InstallAppコマンド
例:
installApp "/Path/to/App/AppName.ipa"
例:
installApp(applicationPath:"/Path/to/App/AppName.apk")
例:
installApp(applicationPath:"/Path/to/App/AppName.ipa", provisionPath:"sut:/Path/to/Provisioning/Profile/YourProvisioningProfile.mobileprovision", certificateName:"your iPhone Developer certificate name")
パラメータ:applicationPathが常に必要となります。iOSでは、開発利用向けアプリにコード署名する(デベロッパー署名とも呼ばれる)場合は、オプションフィールドはprovisionPathとcertificateNameとなります。
挙動:このコマンドにより、アプリがモバイルデバイスにインストールされます。applicationPathパラメータを使って、インストールするアプリを特定します。provisionPathプロパティとcertificateNameプロパティを含める場合は、インストール前にアプリにデベロッパー署名するよう、必要に応じて本コマンドがiOS Gatewayに指示します。インストールするアプリケーションは、それらがeggPlant Functionalを実行している機器上にある場合は、ローカルパスで指定できます。すなわち、iOS Gatewayを実行している機器に既に存在するアプリのインストールは、パスに接頭辞SUT:をつけることで実行できます。本コマンドは、処理前にサーバーから完全なメッセージを受け取るまで待機します。
注:certificateNameプロパティ用の署名証明書は、InstallAppで使用する前にiOS Gateway機器にインストールする必要があります。
KillAppコマンド
例:
KillApp "Podcasts" // iOS 9および10上のポッドキャストアプリを強制終了します
例:
KillApp "com.apple.camera" // iOS 9および10上のカメラアプリを強制終了します
例:
KillApp "com.google.android.apps.maps" //Android上の地図アプリを強制終了します
パラメータ:終了したいアプリの名前。
- iOS 7およびiOS 8では、アプリ名は開発プロビジョニングプロファイルを利用して署名されたアプリの名前またはバンドルIDとなります。
- iOS 9以降では、アプリ名はアプリの名前またはバンドルID(つまり、com.apple.camera)となります。
- Androidでは、アプリ名はパッケージ名となります。
挙動:このKillAppコマンドは特定のアプリを終了します。
注:
- KillAppコマンドを利用するには、eggPlant Functional 15.21以降において、iOS Gateway 2.6以降、Android Gatewayまたは組み込みAndroid VNCサーバが必要です。
- アプリのパッケージ名をAndroidデバイス上で確認するには、パッケージマネージャのpm list packagesコマンドとExecuteRemoteCommandコマンドを以下のように使用します。
-
例:
put ExecuteRemoteCommand("pm list packages", WaitFor:10)
- iOS 8では、本コマンドを利用して特定のアプリを強制終了することはできません。
- iOSにおける本コマンドの利用に関する詳細情報は、iOS テストでよくある問題の解決ページのアプリの終了を参照してください。
LaunchAppコマンド
例:
LaunchApp "Springboard"
例:
LaunchApp "com.apple.camera"
例:
LaunchApp "com.google.android.apps.maps"
パラメータ:ローンチしたいアプリの名前。
- iOS 7および8では、アプリ名はデベロッパー署名済みアプリの名前(またはSpringboard)、またはバンドルIDとなります。また、スペース、コロン、およびデバイス上のデベロッパー署名済みアプリの名前を後ろにつけて、iOSデバイスの名前を指定することも可能です。
- iOS 9以降では、アプリ名はアプリの名前またはバンドルIDとなります。
- Androidでは、アプリ名はパッケージ名となります。
挙動:このコマンドにより、アプリがモバイルデバイスにローンチされます。iOS Gatewayを介して接続されているiOS 7デバイスまたはiOS 8デバイスでは、本コマンドはデベロッパー署名済みアプリまたはSpringboardに制限されます。
例:
put ExecuteRemoteCommand("pm list packages", WaitFor:10)
PinchInコマンド
例:
PinchIn(At:"UNITEDSTATES_LEFT", From:"UNITEDSTATES_RIGHT")//Fromポイントを移動:指はピンチ作業のみに使用し、両指をそろえて終了します
例:
PinchIn(distance:500) //指定した距離(ピクセル)でpinchInを実行します。距離は、デフォルトでは画面中央に設定されるAt: ポイントに関連します。
例:
PinchIn(At:RemoteScreenSize()/3), Duration:5.0) //画面の左側1/3から5秒間継続してpinchIn を実行します。
パラメータ:1組の座標、画像、またはテキスト(OCR)として表されるオプションのAtポイント、1組の座標、画像、またはテキスト(OCR)として表されるオプションのFromポイント、ズームの実行に要する時間を表すオプションのDuration(デフォルトは2秒)、Fromパラメータの代わりに使用され、ピクセルで表されるオプションのDistance(DistancもFromも指定しない場合は、デフォルトの距離は最も短い画面寸法の 4.5%となります)。
挙動:このPinchInコマンドは、画面上の2点をつまむように作動します。このピンチインの効果はズームアウトとなります(すなわち、画面上の画像が実際に小さくなります)。PinchInコマンドでは、Atポイントは静的または「固定」で、Fromポイントは Atポイントに向かって移動します。パラメータが全く設定されていない場合は、pinchinは画面中央で2秒間、4.5%のピンチ量で発生します。
例:
PinchIn(Distance:the width of the RemoteScreenSize * 0.25)//距離を画面幅の1/4に設定します。
PinchOutコマンド
例:
PinchOut"CityLabel"
例:
PinchOut(At:"UNITEDSTATES_LEFT", To:"UNITEDSTATES_RIGHT")//Toポイントを移動:指はピンチ作業のみに使用し、両指をそろえて開始します。
例:
PinchOut(Distance:300)//指定した距離(ピクセル)においてpinchoutを実行します。距離は、デフォルトでは画面中央に設定されるAt: ポイントに関連します。
パラメータ: 1組の座標または画像で表されるオプションのAt ポイント(デフォルトでは画面中央)、1組の座標または画像で表されるオプションのToポイント、ズームの実行に要する時間を表すオプションのDuration(デフォルトは2秒)、Toパラメータの代わりに使用され、ピクセルで表されるオプションのDistance。DistanceもToも指定しない場合は、デフォルトの距離は最も短い画面寸法の25%となります。
挙動:このPinchInコマンドは画面上の2点をつまむように作動します。ピンチアウトの効果はズームインとなります(すなわち、画面上の画像が実際に大きくなります)。PinchOutコマンドでは、Atポイントは静的または「固定」で、ToポイントはAtポイントから遠ざかるように移動します。パラメータが全く設定されていない場合は、pinchoutは画面中央で2秒間、20%のピンチ量で発生します。
Pressコマンド
例:
Press "AppIcon"
例:
setremoteclipboard "12283" //文字列「12283」をSUTのクリップボードに送信します。
Press "AddressField" //画像AddressFieldを押します
wait 2 //2秒間押したままにします
Release //プレスアクションを解放します
Tap "PasteDialog"
パラメータ:オプションの1組の座標または画像。
挙動:本コマンドは、現在の位置またはパラメータにより指定された位置のいずれかでタップ&ホールドを実行します。本コマンドはMouseButtonDownコマンドに相当し、モバイルデバイスで利用できます。
PressBackButtonコマンド
例:
PressBackButton
パラメータ:なし。
挙動:Android 4.0.4以降を実行しているAndroidデバイスのBackボタンを押します。古いAndroidデバイスの場合は、モバイルコントロール用TypeTextキーワードを参照してください。
PressHomeButtonコマンド
例:
PressHomeButton
パラメータ:なし。
挙動:iOSデバイス上、およびAndroid 4.0.4以降を実行しているAndroidデバイス上でホームボタンを押します。古いAndroidデバイスの場合は、古いAndroidデバイスとモバイルコントロール用TypeTextキーワードを参照してください。
例:
TypeText HomeButton, HomeButton
本コマンドは、1行に入力する必要があります。行を2行に分けると、デバイスは2度押しではなく、2つの個別のホームボタン押下と認識します。
Rebootコマンド
例:
Reboot
パラメータ:なし。
挙動:このRebootコマンドはモバイルデバイスで利用できます。本コマンドは、接続がアクティブなモバイルデバイスを再始動します。
Rebootコマンドをスクリプト内で使用する場合は、disconnectコマンドを本コマンドの直後に送信し、その後再接続することを推奨します。再接続する際は、デバイスの立ち上がり時間を考慮に入れる必要があります。例えば、 以下の例に示すように、repeatコマンドの中にconnectコマンドを設定し、成功するまで接続を試行させることができます。
例:
Connect "AndroidSUT", port:5900
Reboot
Disconnect
Repeat until the connectioninfo.connected is true
try to connect "AndroidSUT", port:5900
Log the counter
End repeat
Releaseコマンド
例:
Release "AppIcon"
パラメータ:オプションの1組の座標、画像またはテキスト(OCR)。
挙動:このコマンドは、現在の位置または指定した位置のいずれかでPressコマンドを解放します。このコマンドはMouseButtonUpコマンドに相当し、モバイルデバイスで利用できます。
RotateLeft、RotateRightコマンド
例:
RotateLeft(WaitFor:10.0)
パラメータ:回転を生じさせるオプションのWaitFor時間。
挙動:RotateLeftコマンドは、モバイルデバイスの画面を現在のデバイスの向きから時計回りに1/4回転(90度)させ、RotateRightコマンドは画面を現在の向きから反時計回りに1/4回転(90度)させます。
SetDeviceLocation
例:
SetDeviceLocation(latitude:1.1, longitude:2.2)
例:
SetDeviceLocation(123.45,-123.45)
パラメータ:デバイス上に設定したい位置の緯度および経度。
挙動:本コマンドにより、デバイスのGPSを上書きしたり、AndroidデバイスまたはiOSデバイス上に希望する位置を設定できます。Androidデバイスでは、本コマンドを作動させるためにdeveloper settingsを変更する必要があります。iOSデバイスでは、本コマンドを作動させるために位置サービスを有効にする必要があります。
SetDeviceOrientationコマンド
例:
SetDeviceOrientation LandscapeRight
パラメータ:設定したいデバイスの向き(LandscapeLeft、LandscapeRight、Portrait、PortraitUpsideDown)とオプションのWaitFor時間。
挙動:本コマンドにより、デバイスの向きがパラメータで指定した向きに変更されます。処理は、新しい向きになるまで待ってから続行されます。ただし、WaitFor遅延時間を設定してタイミングを制御することも可能です。SetDeviceOrientationコマンドがタイムアウトすると、例外が投げられます。
関連:
- GetDeviceOrientation:この関数を利用すると、デバイスの現在の向きに関する情報が返されます。
SwipeDown、SwipeLeft、SwipeRight、SwipeUpコマンド
例:
SwipeLeft
例:
SwipeDown "NotificationBar"
例:
Set the SwipeSpeed to 80 //スワイプ中のスワイプ速度を80ピクセルをドラッグするように設定します
SwipeUp the remoteScreenSize times .9 //画面上部90%、および画面左部90%からスワイプを開始します。
例:
ScrollUntilFound "ChromeIcon", "left" //ハンドラ「ScrollUntilFound」を呼び出し、画像と方向を表す2つのパラメータを渡します。
on ScrollUntilFound myImage, Direction //2つのパラメータでコマンドハンドラを宣言します。
repeat until imagefound (imagename:myImage,waitFor:0) //特定の画像が見つかるまで繰り返し、反復ごとに画像スキャンが1回だけ行われるようにします。
if the repeatindex = 5 then throw "Image not found", "Image not found while scrolling"&&Direction&period //repeatループの回数が5回になったら例外を投げます
Do "Swipe" & Direction //Doコマンドを利用して文字列と変数をコマンドに組み込みます
wait 2 //スワイプ後に2秒待って画面を確定させる
end repeat
end ScrollUntilFound
パラメータ:スワイプの開始点を示すオプションの1組の座標、画像、またはテキスト(OCR)。
挙動:本コマンドにより、スワイプモーションが実行されます。スワイプは、指定された位置、画像またはテキスト(OCR)から開始するか、自動的に決定された画面端近くの位置から開始します。SwipeDownとSwipeUpは、それぞれ画面下部および画面上部付近の中央位置から自動的に開始し、画面の反対側の端に向けてスワイプします。SwipeLeftとSwipeRightは、それぞれ画面左と画面右付近の中央位置から自動的に開始し、画面の反対側に向けてスワイプします。この動きは、弧を描くようにモバイルデバイスを手でスワイプする動きを模倣しています。
Tapコマンド
例:
Tap "Safari_Icon"
パラメータ:オプションの1組の座標または画像。
挙動:このコマンドは、現在の位置またはパラメータで指定された位置のいずれかでタップを実行します。このコマンドはClickコマンドに相当し、モバイルデバイスで利用できます。
挙動:Tapコマンドにおけるタップダウンとタップアップ間のタイミングは、MouseClickDelayグローバルプロパティによって制御されます。MouseClickDelayを極端に長くすることで、 TapをPress&Releaseのように振る舞わせることができます:
例:
set the mouseclickdelay to 2 //タップダウンとタップアップ間の遅延時間を2秒に設定します
tap "SearchField" // SearchField imageをプレス&リリースします
UninstallAppコマンド
例:
UninstallApp "MyApp" //iOS上のアプリをアンインストールします
例:
UninstallApp "com.google.android.apps.maps" //Androidアプリをアンインストールします
パラメータ:アンインストールしたいアプリの名前。
- iOSでは、アプリ名はアプリの名前となります。
- Androidでは、アプリ名はパッケージ名となります。
挙動:このUninstallAppコマンドは、指定したアプリを削除します。
例:
put ExecuteRemoteCommand("pm list packages", WaitFor:10)