マウスイベントとコントロール
このセクションでは、Eggplant Functionalのマウスイベントを実行したり、SUT上のマウスカーソルに関する情報を返したりするコマンドと関数について説明します。これらのコマンドと関数の多くは、Click
、DoubleClick
、Drag
、Drop
、DragandDrop
、MouseButtonDown
、そして MouseLocation()
など、モバイルSUTだけでなくデスクトップSUTに対しても動作し、モバ イルとデスクトップの両方のプラットフォームを自動化するスクリプトの作成に役立ちます。SenseTalkには、モバイルコマンドと関数のセットも含まれており、その一部(Tap
、DoubleTap
、Press
など)はデスクトップSUTと互換性があります。
Click
コマンド
このコード定義では、画像ベースのスクリプティングのための Click
コマンドの使用について説明しています。このコマンドをWebDriver接続に使用する方法については、WebDriver Mouse and Keyboard Events: Click Commandをご覧ください。
動作: 最初に見つかった場所(画像)のホットスポットか、または中央(OCR)にSUTのマウスをクリックします。もし一つ以上 の画像またはテキスト文字列が渡された場合、Eggplant Functionalはそれらがリストされた順序で画像を探します。
Tap
と Click
コマンドは同じイベントを実行し、デスクトップとモバイルの両方のSUTに対して使用することができます。
パラメータ: 一つ以上の 画像参照 または テキストプロパティ (OCR用), または単一の座標位置。
例:
repeat with each item of ["Option1","Option2","Option3"] //画像のリストを通じて繰り返す
click it//リストの現在 の画像のホットスポットをクリックする
end repeat
例:
click{text:"Tweet",waitFor:10,searchRectangle:["AnchorLeft","AnchorRight"]} //指定されたsearchRectangleで約10秒間待ってから、"Tweet"という文字列の中央をクリックします
例:
このようなコードを使用して、ファイルエクスプローラ/ファインダー内のアイテムのセクションを選択し、その後でファイルをコピーすることができます
Click "FirstEntry" //画像 "FirstEntry" のホットスポットをクリックします
KeyDown ShiftKey //Shiftキーを押し続けます
Click "LastEntry" //画像 "LastEntry" のホットスポットをクリックします
KeyUp ShiftKey //Shiftキーを離します
RightClick //前のマウスイベントと同じ位置で右クリックします
Click "CopyMenuItem"
例:
時々、クリックする前に画像を2回検索すると、コンテンツが読み込まれるときにシフトするUIを自動化するのに役立ちます
WaitFor 10, "NewTweet" //画像 NewTweetが表示されるのを待ちます
Click{Image:"NewTweet",HotSpot:[80,0]} //NewTweetを再度検索し、画像の左上隅から右に80ピクセルの位置にクリックを送ります。HotSpot画像プロパティを含めるときは、"image:"プロパティを追加することに注意してください
例:
if ImageFound(text:"Cancel") then click FoundImageLocation() //"Cancel"という文字列が見つかった場合、その文字列の中心の位置をクリックします
例:
Click the RemoteScreenSize*.5 //画面の中心点をクリックします
例:
//このようなコードを使用して、トリプルクリックイベントを実行します
on TripleClick imageToClick //パラメータ "imageToClick" 付きで "TripleClick" というカスタムコマンドハンドラを宣言します
//次の3行は、Eggplant Functionalコマンド間のタイミングを変更し、3つのクリックを連続で送信できるようにします
put the RemoteWorkInterval into defaultRWI //現在のリモート作業間隔の値を保存し、後で元に戻すことができるようにします
set the RemoteWorkInterval to .01 //リモート作業間隔を0.01秒に設定し、イベントをSUTに大幅に高速で送信できるようにします
//これらの3行は、指定されたリモート作業間隔で、画 像を1回クリックし、その後、同じ位置を2回クリックします
Click imagetoClick //パラメータとして渡された画像のホットスポット位置にクリックを送信します
//2回のクリックは、前のクリックと同じ位置で行います
Click
Click
set the RemoteWorkInterval to defaultRWI //リモート作業間隔を元の値に戻します
end TripleClick
DoubleClick
コマンド
このコード定義は、画像ベースのスクリプティングのための DoubleClick
コマンドの使用方法を説明します。WebDriver接続のためのこのコマンドの使用についての情報は、WebDriver Mouse and Keyboard Events: DoubleClick Commandを参照してください。
振る舞い: 最初に見つかった位置のホットスポット(画像)または中央(OCR)でSUTマウスをダブルクリックします。複数の画像またはテキスト文字列が渡された場合、Eggplant Functionalは、リストされた順序で画像を検索します。
DoubleTap
と DoubleClick
コマンドは同じイベントを実行し、デスクトップとモバイルのSUTの両方に対して使用することができます。
パラメータ: 1つ以上の Image References や Text Properties (for OCR)、または単一の座標位置。
例:
//クリップボードを使用してSUTから値を取得するためにこのようなコードを使用します
doubleclick "ConfirmationNumber" //SUT上のテキストをハイライトするために画像 ConfirmationNumberのホットスポットをダブルクリックtypetext controlKey, "c" //キーストロークを使用してSUTでコピーイベントを実行し、ハイライトされたテキストをSUTのクリップボードに入れます
typetext controlKey, "c" //ハイライトされたテキストをSUTクリップボードに入れるために、キーストロークを使用してSUTでコピーイベントを実行します。
put the remoteClipboard into ConfNum //SUTのクリップボードの内容を取得し、それを変数に格納します
例:
//この例は上のTripleClickの例と似ていますが、DoubleClickを使用し、異なる構文でアプローチを少し変えています
to handle TripleClick // "TripleClick" という名前のカスタムコマンドハンドラを宣言します
put the MouseDoubleClickDelay into clickTime //MouseDoubleClickDelayを変数clickTimeに保存し、後で使用します
set the RemoteWorkInterval to clickTime //イベントがSUTに送信される間隔であるRemoteWorkIntervalを、clickTimeに保存された値に設定します
DoubleClick param(1) //TripleClickハンド ラに渡された最初のパラメータ値(画像名、座標ペアなど)をダブルクリックします
Click//前のDoubleClickと同じ位置をクリックします
set the RemoteWorkInterval to .7 //RemoteWorkIntervalを0.7秒に設定します
end TripleClick
RightClick
コマンド
このコード定義は、画像ベースのスクリプティングのための RightClick
コマンドの使用方法を説明します。WebDriver接続のためのこのコマンドの使用についての情報は、WebDriver Mouse and Keyboard Events: RightClick Commandを参照してください。
振る舞い: 最初に見つかった場所のホットスポット(画像)または中央(OCR)でSUTのマウスを右クリックします。1つ以上の画像やテキスト文字列が渡された場合、Eggplant Functionalは、リストされた順序で画像を検索します。
パラメータ: 1つ以上のImage ReferencesまたはText Properties(OCR用)、または単一の座標位置。
例:
RightClick {imageName: "Login", searchType: "smooth"} //searchType:smoothの画像プロパティを使用して、"Login"の画像のホットスポットを右クリックします。画像プロパティを含める際には "imageName:" プロパティを追加することに注意してください。
例:
rightClick text:"Firefox" //"Firefox"という文字列の中心で右クリックします
moveTo text:"Send to" //"Send to"という文字列の中心にマウスカーソルを移動します
例:
//このようなコードを使用して、複数のアイテム(File Explorer/Finder内のファイルなど)を選択し、そのファイルをコピーすることができます
Click "FirstEntry" //"FirstEntry"の画像のホットスポットをクリックします
KeyDown ControlKey //コントロールキーを押し続けます
Click "LastEntry" //"LastEntry"の画像のホットスポットをクリックします
KeyUp AllKeys //コントロールキーを含むすべてのキーをリリースします
RightClick //前のマウスイベントと同じ位置で右クリックします
Click "CopyMenuItem"
MouseButtonDown
, MouseButtonUp
コマンド
振る舞い: パラメータで示されるマウスボタンを押す(MouseButtonDown
)か、離す(MouseButtonUp
)。
標準的な3ボタンマウスでは、ボタン1は左ボタン、ボタン2は中ボタン、ボタン3は右ボタンです。ボタン4と5はスクロールホイールの動作を制御します。
Swipe
、Drag
、Drop
コマンドは、多くのケースで MouseButtonDown/Up 1
と同じ状況で役立ちます。これらはすべて左マウスボタンイベントを活用しています。
デスクトップでスクロールするとき、ScrollWheelDown/Up
コマンドは MouseButtonDown/Up 4/5
よりも一般的に使いやすいです。
パラメータ: 単一のマウスボタン番号、1-8。
例:
MouseButtonDown 3//ほとんどのマウスでマウス右クリックを押し続けます
wait 1
MouseButtonUp 3
例:
MoveTo "FirefoxIcon" //マウスカーソルをFirefoxIconのホットスポット位置に移動します
MouseButtonDown 1 //左マウスボタンを押し続けます
MoveTo the remoteScreenSize*(3/4) //マウスカーソルをSUTの右下の四分の一に移動します、Firefoxアイコンも一緒に移動します
MouseButtonUp 1 //左マウスボタンを離します
例:
//このようなコードを使用して、モバイルSUTに内容をペーストします
setremoteClipboard "This is my test message." //指定された文字列をSUTのクリップボードに入れます
moveto "MemoEditor" //マウスカーソルをAddressBar画像のホットスポット位置に移動します
mousebuttondown 1 //左マウスボタンを押し続けます
wait 2 //ペーストダイアログが表示されるまで十分な時間を待ちます
mousebuttonup 1 //左マウスボタンを離します
tap "PasteDialog"
例:
set the remoteWorkInterval to .1 //mousebuttondownとmousebuttonupイベントが.1秒間隔で発生するようにremoteWorkIntervalを減らします
repeat until imagefound(image:"NewAddress",waitFor:0) //興味のある画像がSUTに表示されるまで繰り返します
//次の2つのコマンドは、マウスのスクロールホイールを使用して、ページを一度に1つの増分で下にスクロールします
MouseButtonDown 5
MouseButtonUp 5
Wait 1 // "NewAddress"を検索する前にUIが落ち着くのを1秒待ちます
end repeat
set the remoteWorkInterval to .7
ScrollWheelDown
, ScrollWheelUp
コマンド
動作: マウスホイールを上または下にスクロールします。スクロールの増分あたりの実際の量は、マウスドライバ、プラットフォーム、およびアプリケーションによります。
SUTのマウスホイールを試す簡単な方法は、Ad Hoc Do Boxでパラメータが1のScrollWheelUpまたはScrollWheelDownコマンドを実行することです。時々、スクロールホイールを望む方向にスクロールするために回す必要がある方向(上/下)が直感的でないため、最初に試した方向が機能しない場合は、他の方向も試してみてください。
ほとんどの場合、Moveto
コマンドが必要で、これはカーソルをスクロールしたいウィンドウまたはペインの上に配置するためです。
パラメータ: マウスホイールの増分を表す単一の整数(一部のマウスで音を立てるクリック。)。
例:
ScrollWheelDown 8
例:
repeat until imagefound(image:"NewAddress",waitFor:0) //指定された画像がSUTに表示されるまで繰り返します
Moveto remotescreensize()*(1/2) //マウスカーソルをSUT画面の中央に移動します
repeat until imagefound(image:"NewAddress",waitFor:0) //指定された画像がSUTに表示されるまで繰り返します
ScrollWheelDown 4 //4回分スクロールします
wait 1 //"NewAddress"を検索する前にUIが落ち着くのを1秒待ちます
end repeat
click "NewAddress"
例:
Moveto{image:"CustomerPanelHeader",hotspot:[200,150]} //カーソルをCustomerPanelHeader画像の左上隅から右に200ピクセル、下に150ピクセルの位置に移動します。
ScrollWheelUp 10 //10回分スクロールします。
例:
Moveto {image:"CustomerPanelHeader",hotspot:[200,150]} //カーソルをCustomerPanelHeader画像の左上隅から右に200ピクセル、下に150ピクセルの位置に移動します。
ScrollWheelUp 10 //10回分スクロールします。
MoveTo
コマンド
このコードの定義は、画像ベースのスクリ プト作成用の MoveTo
コマンドの使用を説明しています。WebDriver接続用のこのコマンドの使用については、WebDriver Mouse and Keyboard Events: MoveTo Commandをご覧ください。
動作: SUTのマウスカーソルを、最初に見つかった画像のホットスポット、または座標ペアによって示される位置に移動します。
ホバー要素(メニューやツールチップ)を操作するときには、the MouseMoveSpeed
グローバルプロパティを変更する必要があります。これにより、ホバーオーバーイベントがSUT上で正しく登録されます。デフォルトの値0を使用すると、カーソルは位置間をスムーズに移動するのではなく、ジャンプします。
フライアウトメニューのような連結したホバーオーバー要素間で移行する際には、the MouseMoveMode
を変更して、カーソルのデフォルトの斜め移動を避けることが必要かもしれません。
パラメータ: 一つ以上の画像参照、またはテキストプロパティ(OCRのため)、または一つの座標位置。
例:
moveto "Link" //マウスカーソルをLink画像上に移動します
waitfor 5, "Tooltip" //期待されるツールチップが表示されるのを待ちます
例:
moveto the remotescreensize times .5 //マウスカーソルをSUTスクリーンの中心に移動します
repeat until imagefound(image:"ContactUsLink",waitFor:0) // "ContactUsLink"画像がSUT上で見えるまで繰り返します
if the repeatIndex > 3 then Throw "Image not found.","Contact Us link not found." //もし繰り返しループが3回以上繰り返す場合は例外をスローします
scrollwheeldown 1 //スクロールを1回分します
wait 1 //スクロール後のUIが落ち着くのを1秒待ちます
end repeat
例:
水平フライアウトメニューを操作するために、このようなコードを使用します:
Click "ObjectsMenu"
set the MouseMoveMode to 1 //マウスカーソルの動きの振る舞いを変更し、まず水平方向に移動し、次に垂直方向に移動するようにします
set the MouseMoveSpeed to 5 //マウスカーソルの移動速度を変更し、位置間をジャンプするのではなく、スムーズに移動するようにします
Moveto "Circles" //マウスカーソルを画像"Circles"のホットスポット位置に移動します
Moveto text:"Radius" //マウスカーソルを文字列"Radius"の中心に移動します
Moveto "Value"
set the MouseMoveMode to 0 //マウスの移動振る舞いをデフォルトに戻します
set the MouseMoveSpeed to 0 //マウスの移動速度をデフォルトに戻します
MoveToEach
コマンド
動作: パラメータで指定された場所に、リストされた順序でSUTのマウスを移動します。
パラメータ: 一つ以上の画像参照またはテキストプロパティ(OCRのため)。
例:
MoveToEach "Edit", (780, 91), "Copy"
ホバー要素(メニューやツールチップ)を操作するときには、the MouseMoveSpeed
を変更することが必要な場合があります。デフォルト値の0を使用すると、カーソルは位置間をジャンプしますが、これではSUT上でホバーイベントが正しく登録されないことがあります。
フライアウトメニューのようなリンクされたホバー要素間を移動するとき、カーソルのデフォルトの対角移動を避けるためにthe MouseMoveMode
を変更することが必要な場合があります。
例:
水平フライアウトメニューを操作するために、このようなコードを使用します:
Click "ObjectsMenu"
setOptions {MouseMoveMode:2,MouseMoveSpeed:10} //マウスカーソルの動きの振る舞いと移動速度を変更します。
MovetoEach "Circles", {text:"Radius"}, "Value" //マウスカーソルを指定された順序で各画像またはテキスト文字列のホットスポットまたは中心に移動します。
setOptions {MouseMoveMode:0,MouseMoveSpeed:0} //MouseMoveModeとMouseMoveSpeedをデフォルトの0に戻します。
Drag
コマンド
このコード定義は、画像ベースのスクリプトでDrag
コマンドを使用する方法を説明します。WebDriver接続でこのコマンドを使用する方法については、WebDriver Mouse and Keyboard Events: Drag Commandを参照してください。
動作: 最初に見つかった画像のホットスポット、または座標ペアで指定された場所で、SUTの左マウスボタンを押し続けます。
Drag
、Drop
およびDragandDrop
はモバイルSUTで動作し、左マウスボタンのイベントを開始し、リリースする場所を選択するオプションを提供します。一方、Swipe
コマンドは、左マウスボタンのイベントを開始する場所のみを選択できます。
パラメータ: 1つ以上の画像参照またはテキストプロパティ(OCR用)、または単一の座標位置。
例:
set the MouseDragSpeed to 5 //ドラッグアクションの速度を遅くします
Drag "FirefoxIcon" // "FirefoxIcon"画像に対するドラッグアクションを開始します
Drop the remoteScreenSize*(3/4) // SUTスクリーンの右下の四分の一でドラッグアクションを終了します
set the MouseDragSpeed to 10 //ドラッグの速度をデフォルト値に戻します
例:
put imageLocation("Node") into ElementLoc // "Node"画像の位置を変数に格納します。
Drag ElementLoc // 変数ElementLocに格納された位置でドラッグアクションを開始します。
Drag ElementLoc - [400,300] // ElementLocの位置から左に400ピクセル、上に300ピクセル移動した位置でドラッグアクションを終了します。
例:
put the remoteScreenSize into ScreenSize // SUTの解像度を変数に格納します。
Drag ScreenSize*[.7,.5] // SUTスクリーンの70%の位置でドラッグを開始し、50%下へ移動します。
Drop ScreenSize*[.7,.2] // SUTスクリーンの70%の位置でドラッグを終了し、20%下へ移動します。
Drop
コマンド
このコード定義は、画像ベースのスクリプトでDrop
コマンドを使用する方法を説明します。WebDriver接続でこのコマンドを使用する方法については、WebDriver Mouse and Keyboard Events: Drop Commandを参照してください。
動作: 指定した位置 へ移動し、左マウスボタンをリリースします。
Drag
、Drop
およびDragandDrop
はモバイルSUTで動作し、左マウスボタンのイベントを開始し、リリースする場所を選択するオプションを提供します。一方、Swipe
コマンドは、左マウスボタンのイベントを開始する場所のみを選択できます。
パラメータ: 1つ以上の画像参照またはテキストプロパティ(OCR用)、または単一の座標位置。
例:
Drag "Apple" // "Apple"画像に対するドラッグアクションを開始します
Moveto "Polish" // "Polish"画像へドラッグを続けます
Drop text:"Bucket" // "Bucket"文字列でドラッグを終了します
例:
set ScreenSize to remoteScreenSize() // SUTの解像度を変数に格納します。
Drag ScreenSize times[7/10,1/2] // SUTスクリーンの7/10の位置でドラッグを開始し、1/2下へ移動します。
Drop ScreenSize times[7/10,1/5] // SUTスクリーンの7/10の位置でドラッグを終了し、1/5下へ移動します。