データの収集と利用
SUT上のテキストの読み取り
ReadText()
関数と ReadTable()
関数は、Eggplant FunctionalのOCRエンジンを使用して、SUT上の指定された領域のテキストを読み取り、返します。領域は、長方形内(対角線上の二点によって決定される)や、単一の点の近くにあることができます。
簡単にするために、以下の情報は ReadText()
関数を参照しています。この情報は ReadTable()
関数にも適用されます。
長 方形内のテキストの読み取り
ReadText()
関数を長方形のパラメータとともに呼び出すと、長方形は返されるテキスト値を絶対的に制限します。つまり、テキストの行がテキストの長方形の端を越えて伸びている場合、オーバーフローテキストは返されません。
Eggplant Functionalの他の長方形と同様に、テキストの長方形は二つの対角点によって決定されます。各点は画像名(それが見つかった場所を表す)または他の座標値として指定できます。
例::
Set address to ReadText (("AddressField", "EndAddressField"))
// アドレス変数を指定された長方形内のテキストに設定します。長方形の対角点は
//「AddressField」画像の位置と「EndAddressField」画像の位置は、
// 指定された長方形内にあります。
点近くのテキストの読み取り
ReadText()
関数を単一の点パラメータとともに呼び出すと、OCRエンジンはあなたの点を含むテキスト行、またはその点近くで始まるテキスト行を見つけようと試みます。
点は画像名(それが見つかった場所を表す)または他の座標値として指定できます。
SUTクリップボードの使用
読みたいテキストが選択してコピーできる場合は、テキストをSUTのクリップボードにコピーし、RemoteClipboard()
関数を通じてクリップボードの内容を返します。
例:
Click "SomeTextField"
TypeText CommandKey, "a" // テキストフィールド内の全てを選択します。
TypeText CommandKey, "c" // テキストをクリップボードにコピーします。
put RemoteClipboard(5) // 前のリモートコマンドによって生成されたクリップボードの内容を最大5秒間待ってから返します。
注釈: Mac OS X システ ムでは、ユーザーアカウント外で実行されているVNCサーバー(システムサーバー)はクリップボードの内容を転送できません。SUTのクリップボードにアクセスしたい場合は、アクティブなユーザーアカウント内のVNCサーバーに接続していることを確認してください。
データ駆動型テスト
テスト自動化の大きな利点の一つは、異なるデータ値を使用してテストを繰り返し実行する能力です。一般的なアプローチは、テキストファイルにデータを保存し、スクリプトの途中でそのファイルから値を読み取ることです。SenseTalkのチャンク式と直接ファイルアクセスは、このタスクをフォーマットされたテキストファイルで簡単に行うことができます。
例えば、計算機アプリケーションをテストするために、カンマで区切られた数値が書かれたテキストファイルを渡すことができます。
| 例:計算機テストデータファイル | | | --------------- | | | 1, 2, 2 | | | 3, 4, 12 | | | 5, 6, 30 | |
以下のスクリプトは、ファイルの各行の最初の二つの値を掛け合わせるために計算機を駆動します。その後、それらの製品を返し、それらを三番目の値と比較して検証します。
例:
repeat with theData = each line of file "CalculatorData.txt"TypeText item 1 of theData // データファイルの現在の行から1つ目の値を入力します
TypeText item 1 of theData // データファイルの現在の行から2つ目の値を入力します
Click "Multiply Button"
TypeText item 2 of theData // データファイルの現在の行から2つ目の値を入力します
Click "Equals Button"
Click “OutputField”
TypeText CommandKey, "a" // 出力フィールド内の全てを選択します
TypeText CommandKey, "c" // テキストをSUTのクリップボードにコピーします
put remoteClipboard() into Answer // クリップボードの内容を変数に入れます
if (Answer is not equal to item 3 of theData) then // 結果とデータファイルの3つ目の値を比較します
LogError "Got: " & theAnswer & ", " & item 1 of theData & " x " & item 2 of theData & "should be " & item 3 of theData // 不一致をエラーとして記録します:
end if
end repeat
データファイルの作成
スクリプトで使用するデータは、テキストファイルだけでなく、スプレッドシートからも取得することができます。スプレッドシートプログラムには通常、CSV(カンマ区切りの値)形式、またはタブ区切りのテキストとしてファイルをエクスポートするオプションがあります。
次の例に示すように、スクリプト内で直接データを渡すこともできます。この例のスクリプトは、各行に3つの数字があるテストデータファイルを作成します。3つ目の数字は最初の2つの数字の積です。*
例:
set file "/tmp/CalculatorData.txt" to {{
1,2,2
3,4,12
5,6,30
}}
注釈: SenseTalkは、ファイルという言葉を使って、ファイル名を続けることで、ファイルの全内容を簡単に読み書きできます。上の例のファイル名を参照してください。正しいファイルを操作していることを確認するために、ファイルの完全なパス名を使用することをお勧めします。詳細については、File and Folder Interactionのページを参照してください。
データファイルの読み込みと検証
次の例は、返されたデータファイルを読み込むスクリプトを示しています。
例:
repeat with theData = each line of file "/tmp/CalculatorData.txt" // それぞれの行の内容を順番にtheData.txtに割り当てます。
put repeatIndex() & ": " & theData // ループが繰り返される回数をカウントし、各行の前にこの値を書き出します。
end repeat