ソフトキーボードでの入力
TypeTextコマンドは、任意のSUTでテキストを入力するために使用できます。ほとんどの状況では、これが最も簡単で直接的なアプローチです。しかし、モバイルデバイスでは、ユーザー体験を完全に模倣するわけではありません。いくつかの状況では、TypeTextイベントを直接システムに注入する代わりに、モバイルデバイスのソフトキーボードに対して入力することが望ましいです。これは、テストしたいカスタムソフトキーボードがあるアプリケーションがある場合や、ユーザー体験をより密接に模倣したい場合に特に有用です。
モバイルデバイスのソフトキーボードでの入力
このシナリオは、スクリプトのモジュール化が役立つ素晴らしい例でもあります。ソフトキーボードに対して入力するためのコードは、ハンドラーに分割され、別のスクリプトやハンドラーライブラリに保存できます。これが作成されると、そのコードと関連するすべての画像はヘルパースイートに保存され、何度も再利用できます。モバイルデバイスのソフトキーボードと対話する必要があるたびに、関連するコードを呼び出し、そのハンドラーに入力したい文字列を渡すだけです。
このタイプのハンドラーの例:
to SoftType WordToType //変数 "WordToType"は、呼び出しスクリプトから渡されるタイプの文字列をキャッチします。
put the remoteworkinterval into RWI //remoteworkintervalは、使用するソフトキーボードとそのアニメーションによって、このハンドラーで調整できます。
set the remoteworkinterval to .5 //この例で使用される設定は、iOS 6とAndroid 4.1.1の両方で動作します。
repeat with each character letter of WordToType //渡された文字列の文字を反復処理し、各文字をその文字と同じ名前の画像への参照として使用します。たとえば、文字 "a"の画像は "a"と呼ばれるでしょう。
Click letter //変数 "WordToType"に渡された順序で各文字をクリックします。
end repeat
set the remoteworkinterval to RWI //これにより、remoteworkintervalが元の値に再設定されます。
end SoftType
スワイプタイプを使用したソフトキーボードでの入力
ソフトキーボードでの入力は、上記の方法で行うことができ、各文字キーが個々にタップされ、キーボードでユーザーが入力する方法を模倣します。しかし、Eggplant Functionalを使ってスワイプタイプも模倣することができます。
これはキーボードでの入力方法としてはあまり一般的ではありませんが、ユーザー体験をより密接に模倣するため、またはカスタムソフトキーボードでのスワイプタイプ機能を確認するためには 重要なテストが可能です。さらに、このスワイプタイピングをスクリプト化する方法は、デバイスを解除するパターンを使用するなど、他の形状の描画に修正して適用することができます。
このタイプのハンドラーの例:
注:このスクリプトは、Samsungデバイス上のネイティブAndroidスワイプタイプキーボードに対して動作するように書かれています。このスクリプトのタイミング設定は、テストされるデバイスとキーボードによって調整が必要かもしれません。
to SwipeType WordToType //変数 "WordToType"は、呼び出しスクリプトから渡されるタイプの文字列をキャッチします。
put the remoteworkinterval into RWI//remoteworkintervalは、使用するソフトキーボードとそのアニメーションによって、このハンドラーで調整できます。
set the remoteworkinterval to .01 //この例で使用されている設定は、Android 4.1.1と互換性があります。
Repeat with each character letter of WordToType //渡された文字列の文字を繰り返し、各文字をその文字と同じ名前の画像への参照として使用します。例えば、文字 "a"の画像は "a"と呼ばれるでしょう。
insert imagelocation(letter) nested after CharLoc //各文字の場所を見つけて保存し、拡張されたドラッグアンドドロップ中にキーが位置で参照できるようにします。
end repeat
Repeat with each item Letter of CharLoc //これでCharLocリストを反復処理します。これは各文字画像の保存された位置のリストです。
drag Letter //CharLoc変数の位置順序に基づいて、順序で各文字をクリックします。これにより、シーケンスの終わりまでドロップせずに各位置をドラッグし、その単語のスワイプタイプアクションを作成します。
end repeat
drop
set the remoteworkinterval to RWI //remoteworkintervalを元の値に戻します。
end swipeType
複数単語のスワイプタイプ
複数の単語でスワイプタイプを行うときは、単語間のスペースが正しく作成されていることを確認することが重要です。標準のスワイプタイプキーボードでは、手動でスペースを追加しない場合に自動的にスペースを挿入する可能性がありますが、スペースを追加して所望のテキストの正しい入力を確保することもできます。
以下のようなコード行を使用して、キーボード上で各単語がスワイプタイプされた後にスペースキーをタップすることができます。
Tap "SpaceKey" //これはスペースキーの画像をタップし、呼び出されるハンドラーの最後、または各単語がハンドラーに渡された後の呼び出しスクリプトに挿入できます。
呼び出しスクリプトは各単語をハンドラーに個別に渡す必要がありますが、ハンドラーはリストを反復処理するように設定することもでき、代わりにリストを渡すこともできます。
このタイプのハンドラーの例:
呼出しスクリプト
put ("TestPlant","is","the","Best") into WordList //入力する単語のリストを作成し、それを呼び出されるハンドラーに渡します。
Handlers.SwipeSentence WordList //SwipeSentenceハンドラーを呼び出します。これはスワイプタイプが有効なキーボードで入力する単語のリストを反復処理するように設定されています。
スワイプタイプで文を入力するためのハンドラー
to SwipeSentence WordList //変数 "WordList"は呼び出しスクリプトから渡される入力する単語のリストをキャッチします。
put the remoteworkinterval into RWI //remoteworkintervalは、使用されているソフトキーボードとそのアニメーションに応じて、このハンドラーで調整することができます。
Set the remoteworkinterval to .1 //この例で使用されている設定は、Android 4.1.1と互換性があります。
Repeat with each item WordToType of WordList //入力する単語のリストを反復処理します。WordList変数に渡されます。
Repeat with each character letter of WordToType //渡された文字列の文字を繰り返し、各文字をその文字と同じ名前の画像への参照として使用します。例えば、文字 "a"の画像は "a"と呼ばれるでしょう。
insert imagelocation (letter) nested after CharLoc //シーケンスの各文字を検索し、その位置をリストに保存します。
repeat with each item letter of CharLoc //画像の位置のリストを反復処理します。
drag letter //リストの各位置にドラッグして、単語をスワイプタイプします。
end repeat
drop
Tap space //これはテストされるキーボードによっては不要かもしれません。一部のスワイプタイプのキーボードは単語の間に自動的にスペースを挿入し、一部は挿入しません。
set CharLoc to empty //シーケンスの次の単語のスワイプタイピングのために、この変数を空にする必要があります。
set wordtotype to empty //シーケンスの次の単語のために、この変数を空にする必要があります。
end repeat
set the remoteworkinterval to RWI //remoteworkintervalを元の値にリセットします。
end SwipeSentence