モバイル制御とタッチイベント

EggPlant Functionalは、モバイルデバイスの被試験システム(SUT)としての使用に特化した多くのコマンドと関数を提供します。

注:本機能は、EggPlant Functional 14.0以降で利用できます。

ADBCall()関数

注:本関数は、Androidデバイスのみで有効です。

例:

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コマンドストリングに代入します

パラメータ:関連パラメータの有無にかかわらず利用可能な、pushpullshelllogcatなどの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は単一のファイルにのみ有効であり、フォルダのコピーはできません。

注:iOS Gatewayでは、本コマンドはファイルをGatewayにコピーし、デバイスにはコピーしません。

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を呼び出します。
注:ExecuteRemoteCommand() コマンドを利用するには、eggPlant Functional 15.21以降において、iOS Gateway 2.6以降または組み込みAndroid VNCサーバが必要です。ExecuteRemoteCommand()は、iOS 7と8のみで有効です。

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では、開発利用向けアプリにコード署名する(デベロッパー署名とも呼ばれる)場合は、オプションフィールドはprovisionPathcertificateNameとなります。

挙動:このコマンドにより、アプリがモバイルデバイスにインストールされます。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に制限されます。

注:アプリのパッケージ名をAndroidデバイス上で確認するには、パッケージマネージャのpm list packagesコマンドとExecuteRemoteCommandコマンドを以下のように使用します。

例:

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パラメータの代わりに使用され、ピクセルで表されるオプションのDistanceDistancFromも指定しない場合は、デフォルトの距離は最も短い画面寸法の 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パラメータの代わりに使用され、ピクセルで表されるオプションのDistanceDistanceToも指定しない場合は、デフォルトの距離は最も短い画面寸法の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コマンドに相当し、モバイルデバイスで利用できます。

ヒント:Pressコマンドを利用する際は、常にReleaseコマンドと対をなして使用する必要があります。

PressBackButtonコマンド

注:本関数は、Androidデバイスのみで有効です。

例:

PressBackButton

パラメータ:なし。

挙動:Android 4.0.4以降を実行しているAndroidデバイスのBackボタンを押します。古いAndroidデバイスの場合は、モバイルコントロール用TypeTextキーワードを参照してください。

PressHomeButtonコマンド

例:

PressHomeButton

パラメータ:なし。

挙動:iOSデバイス上、およびAndroid 4.0.4以降を実行しているAndroidデバイス上でホームボタンを押します。古いAndroidデバイスの場合は、古いAndroidデバイスとモバイルコントロール用TypeTextキーワードを参照してください。

注:iOS 9以降でホームボタンを2度押しする場合は、TypeTextを利用します。

例:

TypeText HomeButton, HomeButton

本コマンドは、1行に入力する必要があります。行を2行に分けると、デバイスは2度押しではなく、2つの個別のホームボタン押下と認識します。

Rebootコマンド

例:

Reboot

パラメータ:なし。

挙動:このRebootコマンドはモバイルデバイスで利用できます。本コマンドは、接続がアクティブなモバイルデバイスを再始動します。

注:Rebootコマンドを利用するには、eggPlant Functional 15.21以降において、iOS Gateway 2.6以降、Android Gatewayまたは組み込みAndroid VNCサーバが必要です。

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

パラメータ:設定したいデバイスの向き(LandscapeLeftLandscapeRightPortraitPortraitUpsideDown)とオプションの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)から開始するか、自動的に決定された画面端近くの位置から開始します。SwipeDownSwipeUpは、それぞれ画面下部および画面上部付近の中央位置から自動的に開始し、画面の反対側の端に向けてスワイプします。SwipeLeftSwipeRightは、それぞれ画面左と画面右付近の中央位置から自動的に開始し、画面の反対側に向けてスワイプします。この動きは、弧を描くようにモバイルデバイスを手でスワイプする動きを模倣しています。

ヒント:SwipeSpeedグローバルプロパティを利用して、スワイプアクション中にドラッグするピクセル数を調整できます。
ヒント:スワイプアクションの開始位置に加えて終了位置を指定したい場合は、代わりにDragandDropコマンド、またはDrag コマンドとDropコマンドを利用します。

Tapコマンド

例:

Tap "Safari_Icon"

パラメータ:オプションの1組の座標または画像。

挙動:このコマンドは、現在の位置またはパラメータで指定された位置のいずれかでタップを実行します。このコマンドはClickコマンドに相当し、モバイルデバイスで利用できます。

挙動:Tapコマンドにおけるタップダウンとタップアップ間のタイミングは、MouseClickDelayグローバルプロパティによって制御されます。MouseClickDelayを極端に長くすることで、 TapPressReleaseのように振る舞わせることができます:

例:

set the mouseclickdelay to 2 //タップダウンとタップアップ間の遅延時間を2秒に設定します

tap "SearchField" // SearchField imageをプレス&リリースします

UninstallAppコマンド

例:

UninstallApp "MyApp" //iOS上のアプリをアンインストールします

例:

UninstallApp "com.google.android.apps.maps" //Androidアプリをアンインストールします

パラメータ:アンインストールしたいアプリの名前。

  • iOSでは、アプリ名はアプリの名前となります。
  • Androidでは、アプリ名はパッケージ名となります。

挙動:このUninstallAppコマンドは、指定したアプリを削除します。

注:アプリのパッケージ名をAndroidデバイス上で確認するには、パッケージマネージャのpm list packagesコマンドとExecuteRemoteCommandコマンドを以下のように使用します。

例:

put ExecuteRemoteCommand("pm list packages", WaitFor:10)

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant