データを収集・使用する

SUTでテキストを読み取る

The ReadText() and ReadTable() functions use eggPlant Functional's OCR engine to read and return the text in a given area on the SUT. 対象エリアは、(2つの対向する角で定義される)長方形の内側、または単一ポイントの周辺です。

For simplicity, the following information refers to the ReadText() function. This information applies to the ReadTable() function as well.

長方形内のテキストを読み取る

When you call the ReadText() function with a rectangle parameter, the rectangle absolutely limits the returned text value. すなわち、テキストのラインがテキスト長方形の端を超えている場合は、はみ出ているテキストは返されません。

eggPlant Functional内のその他の長方形と同様に、テキスト長方形は2つの対向するポイントにより決定されます。各ポイントは、(画像が見つかったロケーションを表す)画像名として、またはその他の座標値で指定可能です。

Set address to ReadText (("AddressField", "EndAddressField"))

// Sets the address variable to the text in the given rectangle. The diagonal points of

// the rectangle are the location of the AddressField image, the location of the

// EndAddressField image.

ポイント周辺のテキストを読み取る

When you call the ReadText() function with a single point parameter, the OCR engine attempts to find a line of text that includes your point, or a line of text that begins near that point.

ポイントは、(画像が見つかったロケーションを表す)画像名として、またはその他の座標値で指定可能です。

SUTクリップボードを使用する

If the text you want to read can be selected and copied, copy the text to the SUT clipboard, then return the clipboard contents through the RemoteClipboard() function.

例:

Click "SomeTextField"

TypeText CommandKey, "a" // Selects All in the text field.

TypeText CommandKey, "c" // Copies text to the clipboard.

put RemoteClipboard(5) // Waits up to 5 seconds to return the clipboard content generated by previous remote command; shows that content.

:Mac OS Xシステムでは、ユーザアカウント外のVNCサーバ(システムサーバ)でクリップボードコンテンツは転送できません。SUTクリップボードへとアクセスするには、アクティブなユーザアカウントのVNCサーバに接続されていることを確認してください。

データ駆動テスト

テスト自動化の大きなメリットの1つは、異なるデータ値を使用して繰り返しテストを実行できるという点です。よくあるアプローチとして、データをテキストファイルに保存して、スクリプト実行中にそのファイルから値を読み取るやり方が挙げられます。SenseTalkではチャンク表現や直接的ファイルアクセスを利用しますので、フォーマットされたテキストファイルで上記アプローチを容易に行えます。

例えば、電卓アプリケーションをテストするため、コンマで区切られた数値をテキストファイルでパスするとします。

例:電卓テスト用データファイル

1, 2, 2

3, 4, 12

5, 6, 30

以下のスクリプトは、ファイルの各ライン上の最初の2つの値をかけるよう、電卓を駆動します。その後生成物を返し、それらが正しいか3番目の値と比較します。

例:

repeat with theData = each line of file "CalculatorData.txt"

TypeText item 1 of theData // Enters 1st value from the current line of the data file

Click "Multiply Button"

TypeText item 2 of theData // Enters 2nd value from the current line of the data file

Click "Equals Button"

Click “OutputField”

TypeText CommandKey, "a" // Selects All in the output field

TypeText CommandKey, "c" // Copies text to the SUT clipboard

put remoteClipboard() into Answer // Puts clipboard contents into a variable

if (Answer is not equal to item 3 of theData) then // Compares results with 3rd value in the data file

LogError "Got: " & theAnswer & ", " & item 1 of theData & " x " & item 2 of theData & "should be " & item 3 of theData // Logs discrepancy as an error:

end if

end repeat

データファイルを作成する

The data you use in your scripts might come from a spreadsheet as well as a text file. スプレッドシートプログラムには通常、ファイルをCSV(コンマ区切り値)フォーマットで、またはタブ区切りテキストとしてエクスポートするオプションがあります。

You can also pass the data directly in a script, as shown in the following example. The script in this example creates a test data file with three numbers on each line. The third number is the product of the first two. *

例:

set file "/tmp/CalculatorData.txt" to {{

1,2,2

3,4,12

5,6,30

}}

:SenseTalkでは、word fileの後にfilenameを使用して、ファイルの全コンテンツの読み取り/書き込みが容易にできます。See the filename in the example above. To be sure you're working with the right file, it is a good idea to use the file's full pathname. For more information, see the page File and Folder Interaction.

データファイルを読み取り・検証する

The following example shows a script that reads a returned data file.

例:

repeat with theData = each line of file "/tmp/CalculatorData.txt" // Assigns the contents of each line to theData.txt in turn.

put repeatIndex() & ": " & theData // Counts the number of times the loop is repeated; writes this value before each line.

end repeat

If you run the script at this point, Data.txt returns like this:

1: 1,2,2
2: 3,4,12
3: 5,6,30

Now that the script can read the data file, the next step is to verify that the values on each line contain useful information a shown in the following example:

例:

put zero into goodCount

put zero into badCount

repeat with theData = each line of file "/tmp/CalculatorData.txt" // For each line of the /tmp/ file...

put item 1 of theData into num1 // Puts the three numbers from each line into three different variables.

put item 2 of theData into num2

put item 3 of theData into product

if product = num1 * num2 then // Compares the 3rd number to the product of the first two...

add 1 to GoodCount // then increments GoodCount if they are equal;

else

put "Bad Data at line " & repeatIndex() & ": " & theData // If they are not equal, displays a "Bad data" message,

add 1 to BadCount // and increments BadCount

end if

end repeat

put "Good data lines: " & GoodCount // Returns the GoodCount value

put "Bad data lines: " & BadCount // Returns the BadCount value

:このスクリプトの用語lineおよびitemは、テキストの一部を指すSenseTalk「チャンク表現」です。Items are normally delimited by commas, however, you can specify any other characters as delimiters by setting the itemDelimiter local property. For more information about chunk expressions and the use of different delimiters, see Chunk Expressions.

タイミングスクリプトイベント

This section defines some of the functions useful for timing script events, and provides an example of how you can use them in script logging. For more information, see the Date and Time Values in SenseTalk.

  • The Date:現在の日付を返します
  • The Time:現在の時刻を返します
  • The Seconds:2001年1月1日からの現在までの秒数を返します。

The following script shows a time-logging example:

例:

log "Starting timed task at" && the time && "on" && the date // Logs the script start time and date.

put the time into startTime // (* put any code here that you want to time *)

put the time into stopTime // (* put any code here that you want to time *)

log "That took" && stopTime - startTime &&"seconds to complete." // Logs the total time of the script execution.

If you run the above code, look for the following output:

2002-07-16 14:33:36 -0600log Starting timed task at 02:33 PM on 07/16/02

2002-07-16 14:33:39 -0600log That took 2.500326 seconds to complete.

 

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