HeartCore Robo マニュアル一覧へ |
2022/05/16 |
このドキュメントでは、HeartCore Robo v6.3.4以前でサポートされるテストスクリプト言語ファイル(ファイル名.tpr)の完全な仕様を提供します。その目的は、このツールとそのテストフレームワークを使用して自動テストスクリプトを作成するユーザーに完全な構文と機能のリファレンスを提供することです。スクリプト言語はJava Test Script APIと緊密に連携しているため、Javaテストスクリプトの設計に補完的な機能参照を提供することも目的としています。
このドキュメントで説明する言語のテストスクリプトは、TPRテストスクリプトと呼ばれます。Java Test Script APIに基づくテストスクリプトは、Javaテストスクリプトと呼ばれます。
このドキュメントは、 T-PLAN社の旧バージョンVNCRobot 1.3仕様に基づいており、下位互換性を維持しテストスクリプトの要件・解析および処理ルール、文、式、コマンド、イメージ比較メソッドなどの特定の要素の言語構造および構文について説明します。
HeartCore Roboは、自動化テストスクリプトを作成するためのシンプルな独自スクリプト言語をサポートしています。これは Linux/Unix のシェルスクリプトにやや似た構造化手続き型言語です。現代のプログラミング言語でよく知られている以下のような構造と要素をサポートしています。
HeartCore Roboは、最も一般的なリモートおよびローカルのデスクトップテクノロジで動作するように設計されています。それをサポートするスクリプト言語は、コマンドが以下4つの機能領域に分類されます。
HeartCore Roboは、機能が豊富で成熟した製品です。製品内容は以前のバージョンで開発された言語仕様に基づいて構築されています。HeartCore Roboは以前の製品バージョンの上に追加の機能を提供しているため、TPR独自言語はレポートジェネレータ・画像比較アルゴリズム・デスクトップクライアントなどの追加コマンド、またサービスプロバイダによって随時拡張されています。以前の製品バージョンで設計されたスクリプトは、HeartCore RoboのTPRスクリプト言語と上位互換性を保っています。
# これはコメントです
// これもコメントです
goto
他のプログラミング言語でサポートされているコマンドに似ています)。詳細なラベル情報 については、 HeartCore Robo Desktop CLIオプションの
--fromlabel
および --tolabel
を参照ください。'identificator=value'
または'identificator="value with spaces"'
といった文字列の表示は1つのトークンとみなされ、それらはさらに識別子/値のペアとして解析されます。 This is a text containing
spaces
This
'、' is
'、' a
'、' text
'、' containing
'、' spaces
'の 6つのトークンに分解されます。 This "is a text" containing
spaces
This
'、 ' is
a
text
'、 ' containing
'、 ' spaces
'の ように解析されます。 This text contains "double quote (\")"
This
'、 ' text
'、 ' contains
'、 ' double
quote (")
' と解析されます。Var SAMPLE_VAR_1="value with spaces" SAMPLE_VAR_2=no_spaces
"NO_VAR=not_a_variable"
Var
、 'SAMPLE_VAR_1="value with spaces"',
'SAMPLE_VAR_2=no_spaces'
'NO_VAR=not_a_variable'.
となります。Var SAMPLE_VAR="This is a backslash \"
Var SAMPLE_VAR="This is a backslash &bs;"
wait
/ timeout
/ delay
他のコマンドのパラメータは、次の構文をサポートしています。 "1"
1ミリ秒として設定、以下それぞれ "1s"
1秒、 "1m"
1分、 "1h"
1時間、 "1d"
1日 となります。'3.5h'
は3.5時間(3時間30分)として解析されます。時間値には数値式を含むことができます。 「 数値式 」の章で構文をご確認ください。 Wait "1.5d"
Press "Ctrl+C" wait ="5s"
Var/Eval
コマンド自体 を含む )で参照できます。 HeartCore Roboのテキストプリプロセッサは、各コマンドラインを解析する前にすべての<var_name>
変数({var_name}
)を変数値に置き換えます。 典型的な例:
Var PATH=/tmp
Typeline
"mkdir -p {PATH}; cd
{PATH}"
数字のみの変数名は設定可能ですが避けてください(例: 'Var 1 = "test"')。 これらの変数はプロシージャのパラメータ用に引数として予約されているため、警告なしでプロシージャ実行時に随時書き換えられてしまいます。
変数が定義されていない場合、置換は実行されません。 次の例では、変数定義は#でコメントアウトされているため、'cd {PATH}'
ではなく'cd /tmp'
と直接パスを入力しないとエラーになります。
# Var PATH=/tmp
Typeline "cd {PATH}"
_SEARCH_X_<number>
のような変数をスクリプトループ内で動的に生成する必要があるような '検索'画像比較を処理するために必要です。 次の例は、このような使用法を例示しています。 リモートデスクトップでアイコンを検索し、それぞれの実行をクリックすると変数の遷移が確認できます。
Compareto "search.png" method="search"
for
(i=1; {i}<{_SEARCH_MATCH_COUNT}+1; i={i}+1) {
#入れ子になった変数はサフィックスとインデックスから変数名を構成します。
Mouse
click to=x:{_SEARCH_X_{i}},y:{_SEARCH_Y_{i}}
}
procedure
、
if/else
および for
文)で作成された変数は ローカル変数 とみなされ(入れ子になったブロックを含む)そのコードのブロック内でのみ利用可能です。 Var
または Eval
コマンド を実行し 、ローカル変数名がすでに存在するグローバル変数名と一致する場合は、ローカル変数ではなくグローバル変数を変更したほうが良いでしょう。次例で変数の原則を示します(スクリプト内コメントをご確認ください)。 # グローバル変数の作成
Var GLOBAL=global
if (1 == 1) {
#ローカル変数を作成し、GLOBALの値を「modified」に変更する。
Var LOCAL=local GLOBAL=modified
if (1 > 0) {
Var LOCAL2=local2
#ここでは、GLOBAL, LOCAL, LOCAL2 が利用可能です。
#コマンドは "GLOBAL=modified, LOCAL=local, LOCAL2=local2" と入力します。
Type "GLOBAL={GLOBAL},LOCAL={LOCAL},LOCAL2={LOCAL2}"
}
#ここではGLOBALとLOCALが利用可能であり、LOCAL2はもう存在しません。
#コマンドは "GLOBAL=modified, LOCAL=local, LOCAL2={LOCAL2}" と入力します。
Type "GLOBAL={GLOBAL},LOCAL={LOCAL},LOCAL2={LOCAL2}"
}
#ここではGLOBALが利用可能で、LOCALとLOCAL2はもう存在しません。
#コマンドは "GLOBAL=modified, LOCAL={LOCAL}, LOCAL2={LOCAL2}" と入力します。
Type "GLOBAL={GLOBAL},LOCAL={LOCAL}, LOCAL2={LOCAL2}"
※ なお、v6.3.2以降で新しく設定されたVargコマンドを利用することで変数およびそのスコープを設定・削除することができるようになりました。
Include と Run コマンドで 読み込まれたスクリプト内で定義された変数にも同じ規則が適用され ます。-v/--variable
項目を参照ください。 これにより、特定のテストスクリプトの実行をパラメータ化したり、テストスクリプトコード内の機密情報(ユーザ名、パスワードなど)の露出を回避することができます。 CLIを介して設定すると、変数は「読み取り専用」になり、スクリプト実行の全期間にわたってその値が固定されます。 CLI実行時全てのVar/Eval
スクリプトに適用されるため、この変数を変更するコマンドは無視されます。これは、明示的(定義済み)の変数を含むすべての変数に適用されます。procedure
<procedure_name> {
command1
command2
...
commandN
}
procedure "Perform action A" {
...
}
...
"
Perform action A"
'{'
は、プロシージャの見出しと同じ行になければなりません。 '}'
は、1行に単独でなければなりません。 <procedure_name> parameter1 "parameter2
with spaces" .... parameterN
# Procedure definition. Expected parameters
are:
#
{1} ... file name without extension
#
{2} ... image extension (either jpg, jpeg or png). Defaults
to "png" when omitted.
procedure take_screenshot {
Var
extension={2}
if ({_PROCEDURE_ARG_COUNT} == 1)
{
Var
extension=png
}
Screenshot
{1}.{extension}
desc="This screenshot was created by procedure called
{0}"
}
take_screenshot image1 jpg
take_screenshot image2
scope
パラメータを設定します。 例を次に示します。
# Procedure definition
procedure
exit2 {
Exit 2
scope=procedure
}
# Procedure call
exit2
if
({_EXIT_CODE} == 2) {
#
Any code here will be executed because exit2 戻り値 2
}
take_screenshot image3 tiff
(1)名前は大文字と小文字を区別しない
(2)プロシージャが Include または Run コマンドによってスクリプトにリンクされた別のファイルにある可能性があり
(3)プロシージャはそれを呼び出すコードの前に定義
DisconnectFallback
初期化フェーズ( Connect コマンド 内 )または後で、たとえばサーバが終了(強制終了)またはネットワークエラーが発生 したときなど、VNCサーバへの接続がクラッシュすると、 フォールバックプロシージャが呼び出され ます 。Disconnnectの呼び出しコマンドは、接続が正常に終了するため、プロシージャを開始しません。 フォールバックプロシージャー本体でConnectが呼び出された場合、無限の接続ループを防止するために失敗した場合にプロシージャーを再度呼び出しません。 スクリプトの実行中に通常の操作フェーズで接続クラッシュが検出された場合、現在実行中のコマンドが終了した直後にプロシージャが呼び出されます。 そのような場合、サーバに正しく転送されるデータの範囲がわからないため、安全なリカバリ(スクリプトの再接続と再開を意味する)のためにプロシージャを使用できないことに注意してください。 ComparisonFailureFallback
プロシージャ が実行され ます。 プロシージャ本体の中で "{1}"として取り出すことができる最初のプロシージャ引数は、呼び出し元の比較コマンドの数値終了コードを常に含んでいます。 これは、オブジェクトが見つからない場合には通常「1」であり、1つ以上のテンプレート画像が見つからないか、または読み取れない場合に「2」になるということです。 onfail
ontimeout
procedure
DisconnectFallback {
Exit
3
}
procedure ComparisonFailureFallback {
Screenshot
comparison_failure.png
Exit
{1}
}
// Script body
Connect
localhost:1
password=welcome
Compareto
button.png
method=search
// ...
'1.25'
など。 '5s'
(5秒)のような時間変数は受け入れられません。 例:
Wait
5+5s
Wait 5s+5s
'('
と ')'
'+'
'-'
'-'
(負の数) '*'
'/'
# Wait 1 hour - in milliseconds
Wait
"1*60*60*1000"
#
Search for an image and then click onto it 10 points from
its left upper corner
Compareto
"pattern.png"
method="search"
Mouse click to="x:{_SEARCH_X}+10,y:{_SEARCH_Y}+10"
'
Eval
HOUR_IN_MS=1*60*60*1000
'.
if/else
や for
などの構築を容易にします。 次の演算子がサポートされています。
'('
および ')'
>
」より大きい、「>=
」以上、「<
」未満、「<=
」以下。これらの演算子には数値引数が必要です。 ==
」と等しく、「!=
」または「<>
」と等しくない。少なくとも1つの引数が数値(二重引用符で囲まれた文字列)でない場合、通常の文字列比較が実行されます。
yes == no
」の結果はfalseになります yes != no
」の結果はtrueです 1.0 == 1
」両方の引数が数値に変換され、数値が等しいため、 結果は trueになります。 &&
」 と 「||
」 - 論理 「and」と 「or」。 これらの演算子にはブール引数、つまり他の式が必要です。
1 > 0 || yes != no
」 2つの式のうちの1つがtrueで あるため、式はtrueとなります 1 > 0 && yes != no
」 1つの式がfalseであるためfalseになります 'exists <variableName>'
は変数の存在をテストします。
例:
'exists _REPORT_FILE'
は、スクリプトがレポートコマンドを使用してレポートを作成する場合にtrueになります 'contains'
は、最初の文字列引数に別の文字列引数(大文字と小文字を区別)が含まれているかどうかをテスト
例:
'"{_MACHINE}" contains "sourceforge"'
接続されているVNCサーバー名は「sourceforgeの」が含まれている場合はtrueになります
'startswith'
は、最初の文字列引数が他の文字列引数(大文字と小文字を区別)で始まるかどうかをテストします。
例:
'"{_DISPLAY}" startswith "localhost"'
接続されたVNCデスクトップ名が 'localhost:1'のように 'localhost'で始まる場合、 式 は真となります。 'endswith'
は、最初の文字列引数が他の文字列引数で終わるかどうかをテストします(大文字と小文字を区別します)
例:
'"{_DISPLAY}" endswith ":3"'
は、接続されたVNCサーバーがポート5903(通常はデスクトップ名の ':3'ディスプレイ番号で示されます)で動作する場合にtrueになります。 'matches'
は、最初の文字列引数を java.util.regex.Patternに
準拠した正規表現 と比較します 。
例:
'"{_DATE}" matches "201008[12][1-5]"'
現在の日付が2010年8月21日から25日の間であれば 式 は真となります。 if/else
と for
によって排他的に使用されます。 ブール式を Eval コマンドに 渡して、 指定した変数に 'true'または 'false'の結果を設定することもできます 。
# Look for an image on the remote desktop
Compareto "pattern.png"
method="search"
# Exit if the image is
not found,
if
({_EXIT_CODE} > 0) {
Exit
1
}
for for (i=0; i<MAX(6,10,9); i=i+1) {
...
}
関数 | 説明 |
NOT(式) | 論理否定、式がゼロでない場合は1(真を意味する)。 |
IF(条件、value_if_true,value_if_false) | 条件がtrueと評価された場合は一方の値を返し、falseと評価された場合は他の値を返します。 |
RANDOM() | 0から1の間の乱数を生成します。 |
MIN(e1,e2, ...) | 与えられた式の最小値を返します。 |
MAX(e1,e2, ...) | 与えられた式の最大値を返します。 |
ROUND(式,精度) | 値を特定の桁数に丸めます。現在の丸めモードを使用します。 |
FLOOR(式) | 値を最も近い整数に切り捨てます。 |
CEILING(式) | 値を最も近い整数に切り上げます。 |
LOG(式) | 式の自然対数(基数e)を返します。 |
LOG10(式) | 式の常用対数(10を底とする)を返します。 |
SQRT(式) | 式の平方根を返します。 |
SIN(式) | 角度の三角関数のサインを返す(度単位)。 |
COS(式) | 角度の三角余弦を返します(度単位)。 |
TAN(式) | 角度の三角関数の接線を返します(度単位)。 |
COT(式) | 角度の三角コタンジェントを返します(度単位)。 |
ASIN(式) | asinの角度を返します(度単位)。 |
ACOS(式) | acosの角度を返します(度単位)。 |
ATAN(式) | atanの角度を返します(度単位)。 |
ACOT(式) | acotの角度を返します(度単位)。 |
ATAN2(x,y) | atan2の角度を返します(度単位)。 |
SINH(式) | 値の双曲線サインを返します。 |
COSH(式) | 値の双曲線余弦を返します。 |
TANH(式) | 値の双曲線正接を返します。 |
COTH(式) | 値の双曲線余接を返します。 |
SEC(式) | 割線を返します(度単位)。 |
CSC(式) | 余割を返します(度単位)。 |
SECH(式) | 双曲線正割を返します(度単位)。 |
CSCH(式) | 双曲線余割を返します(度単位)。 |
ASINH(式) | 双曲線サインの角度を返します(度単位)。 |
ACOSH(式) | 双曲線余弦の角度を返します(度単位)。 |
ATANH(式) | 値の双曲線正接の角度を返します。 |
RAD(式) | 度単位の角度をラジアン単位のほぼ同等の角度に変換します。 |
DEG(式) | ラジアン単位の角度を度単位のほぼ同等の角度に変換します。 |
FACT(式) | ラ整数の階乗値を戻します。0または負数の場合は1を返します。 |
if/else
、Javaで使用される同様の機能と構文を サポート しています。 形式は次のとおりです。 if (<boolean
expression>) {
<commands>
} else if
(<boolean expression
>)
{
<commands>
} else {
<commands>
}
'else if'
そして 'else'
枝はオプションです。 'else if'
枝 の数に 制限はありませんが、 'else'
は1つだけ記載できます。 囲み中括弧 '{'
'}'
は
、 上に表示されているとおり、関連する if/else/else/if
キーワード と同じ行になければならないことに 注意してください 。ただし、構造化ブロック全体を終了する 右中括弧 '}'
は唯一の例外であり、1行で単独でなければなりません。 # Look for an image on the remote desktop
Compareto "pattern.png"
method="search"
# Exit if the image is
not found,
if
({_EXIT_CODE} > 0) {
Exit
1
# If the image was
found more times, take a screenshot and add a warning to the
HTML report
} else
if ({_SEARCH_MATCH_COUNT} > 1) {
Screenshot
unexpected.png
Warning
"Unexpected
behavior - the template image was found
{_SEARCH_MATCH_COUNT} times!" image=unexpected.png
}
If/else
文は、他の構造化プログラミング言語で通常のように、 for
文などと入れ子構造で結合することができます。 for
文をサポートしています。 この for
文には2つの一般的な文形があります。 for
文内で 、指定されたブール式が真である限り実行されます。 statement1
と statement2
は、 Eval コマンド を使用して評価され、 次のような構文を持つ必要があります
'<variable>=<numeric expression>'
'index'
が 0〜5 の範囲で変数の値が動的に設定されループしています 。両方のコードスニペットに「012345」と入力します。 for (index=0;
{index}<6; index={index}+1) {
Type
{index}
}
Eval index=0
for ( ; {index} < 6; ) {
Type
{index}
Eval
index={index}+1
}
バージョン2.3以降では、より単純な構文もサポートされています。この場合、ステートメントヘッダー内の変数呼び出しで中括弧は省略されます(例: for (index=0;
index<6; index=index+1) {
}
2.事前定義された値のセットを反復するステートメントfor <variable name> in <list of space
separated values> {
<commands>
}
Type "I speak "
for language in English Spanish "Brazilian Portuguese" {
if ("{language}" == "Brazilian
Portuguese") {
Type
"{language}."
} else {
Type
"{language}, "
}
}
Type "I speak "
Var VALUES=
"English Spanish \"Brazilian
Portuguese\""
for language in {VALUES} {
if ("{language}" == "Brazilian
Portuguese") {
Type
"{language}."
} else {
Type
"{language}, "
}
}
for
文の実行は、break
コマンドによって中断することができます 。
現在のループは、 continue
コマンド によってスキップできます。
ネストされたループがある場合、 break/continue
コマンドは最も内側の for
ステートメント(ブロック)に 適用されます 。 Waitfor
文と for
文
との組み合わせで使用する方法を示しています。 # Infinite loop
for (; 0 == 0; ) {
#
Wait for at least 20% update of the remote screen.
#
If it doesn't update for 10 seconds, break the loop.
Waitfor
update
extent=20% timeout="10s" ontimeout="break"
}
_EXIT_CODE
に利用可能な整数値を返します 。その変数値で 0(ゼロ)の値は通常、成功を意味し、他の数字は失敗を示します。 定義された終了コード値とその意味については、使用コマンドのドキュメントを参照してください。 Compareto
コマンドなどは、比較OKであれば 0 、そうでなければ画像比較パスとゼロ以外の値を返します。 例えば Waitfor
コマンドでは、予期されるイベントが受信されたときに0を返し、タイムアウトに達したときにゼロ以外の値を返します。 次例は、その戻り値を使用する方法を示しています。 # Alt+F2 opens the Run Program window on
Gnome
Press
Alt+F2
wait=3s
#
Start the Gnome Text Editor
Typeline
gnome-text-editor
#
Wait for the remote desktop update
Waitfor
update
extent=30% timeout="10s"
#
If Waitfor 戻り値 non-zero value, the timeout was reached
#
and the text editor probably failed to open
if ({_EXIT_CODE} > 0) {
#
Take a screenshot
Screenshot
failure.png
#
Send the screenshot via E-mail to the tester
Sendmail
to="tester@dummyserver.com" from="robot@dummyserver.com"
server="mail.dummyserver.com" subject="Gnome editor failed to open!" attach="{_REPORT_DIR}/failure.png"
#
Pause the execution and wait for the tester to fix it
Pause
"Paused because
Gnome Text Editor failed to start"
}
if/else
、 for
と break
呼び出しは値を返さないことに
注意してください 。
これらのコマンドのいずれかの後 に 変数 _EXIT_CODE
に アクセスする と、直前に実行されたコマンドの終了コードが代入され、利用できます。 "java -jar robot.jar"
ではなく 、 "java -classpath
<libs> com.tplan.robot.ApplicationSupport"
コマンドを使用してください。前者構文では、一部の環境でJavaコンパイラのクラスパスを生成できないため、Javaソースコードのコンパイルと実行に失敗します。 詳細は 、「リリースノート」内の 「スタートアップ」の章 を 参照して ください。 java {
<import clauses>
<Java code>
} endjava
Javaコードブロック |
結果のJavaテストスクリプトクラス |
|
java { |
|
import com.tplan.robot.scripting.*; |
Var _TEMPLATE_DIR="C:\templates"
# This line
declares dummy values of variables populated by the Java
code.
# It prevents the
compiler from reporting error in the for() loop and
CompareTo command.
Var FILECNT=0
FILE1=dummy.png
java {
File
files[] = getContext().getTemplateDir().listFiles();
int i
= 0;
for
(File file : files) {
if
(file.isFile() && file.getName().endsWith(".png")) {
i++;
getContext().setVariable("FILE"+i,
file.getName());
}
}
getContext().setVariable("FILECNT",
Integer.toString(i));
} endjava
for (i=1; {i}<{FILECNT}+1; i={i}+1) {
Compareto
"{FILE{i}}"
method=search
}
3.4 I/O コマンド
説明 |
次へ | 前へ | 次へ トップ^ |
オプション
browser=<browser_code>
※ InternetExplorerに関してはMicroSoftのサポート対象外となるため弊社でのサポートも対象外となります。ご了承ください。
オプション
timeout =<time_value>
使用例
Browser open browser=edge url="https://www.heartcore.co.jp"
説明 |
次へ | 前へ | 次へ トップ^ |
DisconnectFallback
フォールバックプロシージャ を 参照してください 。 オプション
URL
- 引数は既知の 接続名 (v4.2以降)であるか、または <protocol>://<host_or_IP>[:<port>]
以下で説明するレガシー形式を除く有効なURLで なければなりません。
プロトコルは、サポートされているプロトコルコードの1つと等しくなければなりません。HeartCore Robo Desktopはデフォルトで2つのクライアント(プロトコル)をサポートしています:
HeartCore Robo Desktop4.4は他のクライアントをプラグインできるインタフェースを提供しているため、追加のプラグインでサポートされるプロトコルが増える場合があります。
portが明示的に指定されていない場合、デフォルトは プロトコル固有のよく知られたポートになります 。 たとえば、RFB / VNCサーバーはポート5900でデフォルトで実行され、Java RMIはポート1099で開始され、RDP(Windowsターミナルサービス)ではデフォルトで3389になります。Linux / Unix上で動作するVNCに接続するには、デフォルトのRFBポートがX-Windowsサーバーによって占有されているため、5901以上のポートを指定してください。
URLでプロトコルが省略されている場合、スクリプトはRFB(VNC)プロトコルをデフォルトとし、 VNCRobot 1.xとの下位互換性 を提供します 。 この場合のポート番号は 、ポート番号から5900を引いた値に等しい 表示番号 として扱われ ます。ダイレクトポートは、このモードではダブルコロンで指定できます。 たとえば、 " localhost:1"
と " "localhost::5901"
は、同じローカルVNCサーバーをポート5901で実行していることを指します 。 アドレスは、"rfb://localhost:5901"
となります 。
password= <password>
onpass=<command>
onfail=<command>
params=<param_name_and_value_pairs>
paramseparator
は、現在サポートされているプロトコルでは使用されておらず、将来の使用
やカスタム拡張のために予約されています。 これらは、第三者のクライアントプラグインへのログオンデータの一般的な転送をサポートすることを目的としています。 paramseparator
引数で 指定されたカスタムセパレータを含めることができ ます。 たとえば、2つのパラメータを指定する PARAM_A=value_A
と PARAM_B=value_B
のような場合、"PARAM_A,value_A,PARAM_B,value_B"
となります。 paramseparator = <delimeter>
戻り値
コマンドは、成功した場合は0(ゼロ)を返し、不特定の理由で接続に失敗した場合は1を返します。 UltraVNCサーバーがMSログオンを要求する場合など、サポートされていない認証方法で失敗した場合、コマンドは値10を返します。
使用例
Connect
rfb://localhost:5901
password=test
Connect localhost:1 password=test
Connect localhost::5901
password=test
- 3つの例はすべて同じで、ローカルマシンのディスプレイ番号1(ポート5901)で動作するVNCサーバーに接続します。 パスワード認証が必要です。 これは、通常、ポート5900がX-Windowsサーバによって占有され、VNCサーバが通常ポート5901以上で動作するLinux / Unixシステムでは一般的です。
Connect "Local
VNC"
- Connect Manager に登録された「ローカルVNC」接続に接続します。 サーバーのURLとパスワードは接続レコードからロードされます。
Connect
rfb://mywindows.companyxy.com:5902
password=mypassword force=true
onfail="exit 2"
- mywindows.companyxy.com
で呼び出されたサーバー上で実行されているRFB(VNC)サーバーに接続します 。 ツールがすでにこのサーバーに接続されている場合は、セッションを終了して再接続します。 接続に失敗した場合は、終了コード2でスクリプトの実行を終了します。
Connect file://C:\testdata\images\screen.png
- 指定したイメージをロードし、デスクトップの代わりに表示します。
Connect file://C:\testdata\images\images.jar!/data/screen.png
- 指定されたJARファイルに/data/screen.pngとして圧縮されたイメージをロードし(ZIPもサポートされています)、デスクトップの代わりに表示します。
Connect file://screen.png
- 指定したイメージをロードし、デスクトップの代わりに表示します。 URLが相対的なので、イメージは製品インストールパスからロードされます。
Connect file://{_SCRIPT_DIR}/screen.png
- このコマンドを呼び出すテストスクリプトと同じフォルダにあるイメージをロードし、デスクトップの代わりに表示します。
Connect
rfb://mywindows.companyxy.com:5902
password=mypassword force=true
onfail="exit 2"
- 呼び出されたサーバー上で実行されているRFB(VNC)サーバーに接続します mywindows.companyxy.com
。 ツールがすでにこのサーバーに接続されている場合は、セッションを終了して再接続します。 接続に失敗した場合は、終了コード2でスクリプトの実行を終了します。
Connect adb://default
- USBケーブルを使用してローカルPCに接続されている最初のAndroidデバイスに接続します。
Connect adb://MB104PY14322
- USBケーブルを使用して、指定したシリアル番号のAndroidデバイスに接続します。
Connect java://localhost
Connect apple://192.168.100.8:5901
説明 |
次へ | 前へ | トップ^ |
戻り値
それは切り離しに失敗した接続解除に成功の場合は0(ゼロ)、失敗したら1を返します。
使用例
Disconnect
- 現在接続されているデスクトップから接続解除します。
説明 |
次へ | 前へ | トップ^ |
このコマンドは、次のアクションをサポートしています。
"Gesture press"
指定された場所での指の押下をジェスチャーバッファーに記録します。"Gesture move"
指定された指の新しい場所への移動(ドラッグ)を記録します。"Gesture release"
指定された指のリリースを記録します。"Gesture save"
指定された名前でジェスチャーを保存し、ジェスチャーバッファーをクリアします。"Gesture execute"
接続されたデバイスでジェスチャーを実行し、ジェスチャーバッファーをクリアします。"Gesture clear"
ジェスチャーバッファーをクリアし、新しいジェスチャー設計の準備をします。 これは保存されたジェスチャーには影響しません。 "Gesture execute"と"Gesture save"によってデフォルトでバッファがクリアされるため、通常はこのコマンドは必要ありません。 Gesture press finger=0 to=x:200,y:200
Gesture move finger=0 to=x:200,y:500
Gesture move finger=0 to=x:350,y:500
Gesture release finger=0
Gesture execute
Gesture save name=L-shape
Gesture execute name=L-shape
Gesture execute name=L-shape start=x:350,y:200
Gesture press finger=<fingerID> to=x:<X-coordinate>,y:<Y-coordinate>
*赤色は必須パラメータを示します
オプション
finger=<fingerID>
- 指ID。 0から始まる数値です。サポートされる指の最大数は、接続とデバイスによって異なりますが、通常は5以上です。
to=x:<X-coordinate>,y:<Y-coordinate>
- 指で押す場所。
Gesture move finger=<fingerID> to=x:<X-coordinate>,y:<Y-coordinate>
*赤色は必須パラメータを示します
オプション
finger=<fingerID>
- 指ID。 0から始まる数値です。サポートされる指の最大数は、接続とデバイスによって異なりますが、通常は5以上です。
to=x:<X-coordinate>,y:<Y-coordinate>
- 指を最後の位置から移動(ドラッグ)する位置。
Gesture release finger=<fingerID>
*赤色は必須パラメータを示します
オプション
finger=<fingerID>
- 指ID。 0から始まる数値です。サポートされる指の最大数は、接続とデバイスによって異なりますが、通常は5以上です。
Gesture save name=<name> clear=x:<true|false>
*赤色は必須パラメータを示します
オプション
name=<name>
- ジェスチャー名。 ジェスチャー名は大文字と小文字が区別されます。 同じ名前を繰り返し使用すると、元のジェスチャーが上書きされます。
保存されたジェスチャーは、'clear'アクションまたはパラメーターによってクリアされることはありません。 作成された瞬間からスクリプトが終了するまで利用できます。 環境の標準ジェスチャーのセットを作成するには、名前付きジェスチャーのライブラリー(スクリプト)を作成し、IncludeまたはRunコマンドを使用してそれらをスクリプトにリンクします。
clear=x:<true|false>
- ジェスチャーバッファをクリアして、新しいジェスチャー設計の準備をするかどうかを示します。 クリアすると、これまでに記録されたすべての'press'、'move'、'release'のアクションが破棄されます。 保存されたジェスチャーには影響しません。 デフォルト値は'true'(バッファをクリア)です。
Gesture execute name=<name> start=x:<X-coordinate>,y:<Y-coordinate> duration=<time> duration=<time> clear=<true|false> count=<number> wait=<time>
*赤色は必須パラメータを示します
オプション
name=<name>
- 実行するジェスチャー。 これは、スクリプトによって作成され、"Gesture save"で保存された既存のジェスチャーの名前である必要があります。 ジェスチャー名は大文字と小文字が区別されます。
ジェスチャー名が指定されていない場合、コマンドはジェスチャーバッファーのコンテンツを実行します。
start=x:<X-coordinate>,y:<Y-coordinate>
- カスタムの開始点からジェスチャーを実行します。 デフォルトのジェスチャー開始点は、最小の指IDの'press'位置です(通常は指#0ですが、許容範囲内で指に番号を付けることができます)。 このパラメーターを使用すると、画面上の別の場所からジェスチャーを実行できます。
再配置されたジェスチャーが画面に収まらない場合、コマンドはそれを画面の境界に合わせてトリミングします。 これにより、予期しない結果が生じる可能性があります。
duration=<time>
- ジェスチャー期間。 値は、ミリ秒数または有効な時間値のいずれかである必要があります。 デフォルト値は500ミリ秒(0.5秒)です。
clear=<false|true>
- ジェスチャバッファをクリアして、新しいジェスチャー設計の準備をするかどうかを示します。 クリアすると、これまでに記録されたすべての'press'、'move'、'release'のアクションが破棄されます。 保存されたジェスチャーには影響しません。 デフォルト値は'true'(バッファをクリア)です。
count=<number>
- ジェスチャーを実行する回数。 デフォルト値は1(1回実行)です。
wait=<time>
- ジェスチャーが実行されてから待機する時間。 次のコマンドが 'Wait <time>'の場合と同じ効果があります。 値は、ミリ秒数または有効な時間値のいずれかである必要があります。 デフォルト値は0(待機しない)です。 スクリプトは、_GESTURE_WAIT変数に必要な遅延を設定することでデフォルト値を設定できます(例: "Var _GESTURE_WAIT = 1s")。
Gestureclear
*赤色は必須パラメータを示します
オプション
なし
使用例
Gesture
press finger=0 to=x:125,y:202
Gesture release finger=0
Gesture save name=press
Gesture execute name=press duration=1s
- 指定された場所で1秒間長押しします。
Gesture press finger=0 to=x:300,y:200
Gesture press finger=1 to=x:100,y:500
Gesture press finger=1 to=x:500,y:500
Gesture release finger=1
Gesture release finger=0
Gesture save name=rotate
Gesture execute name=rotate
- 1本の指を押したまま、別の指をその下の水平方向にドラッグします。 これにより、たとえばGoogleマップが回転します。
説明 |
次へ | 前へ | トップ^ |
書式
Mouse [<modifier_1>+ ... +<modifier_N> +]<EVENT_ID> [btn=<BUTTON_NAME>] [modifiers=<modifier_1>+ ... +<modifier_N>] [to=[x:<x>][,y:<y>]] [from=[x<x>][,y<y>]] [center= [x:<x>] [,y:<y>]] [start=<number>] [end=<number>] [count=<number>] [wait=<time>]
赤色は必須のパラメータを示します。
オプション
modefier
event_id
"move"
マウスポインターが動作時点のスタート点から目標点に移動します。 "click"
、指定されたマウスボタンを使用してターゲットポイントで1回以上クリックします。 "press"
、マウスボタンのプレス(リリースなし)、 "release"
、マウスボタンのリリース(このイベントの前に press
イベント が必要です ) "drag"
指定されたマウスボタンを使用して、動作時点のスタート点からからターゲットポイントにマウスをドラッグします。 "swipe"
、タッチディスプレイ付きのデバイス(AndroidやiOSデバイスなど)のためにタイミングを調整したマウスドラッグを行います。 "wheelup"
、1回以上のマウスホイール回転ステップを上方に行います(ホイールはユーザから離れて回転)。"wheeldown"
、1回以上のマウスホイールの回転ステップを下方に行います(ホイールはユーザに向かって回転)。 "pinch"
2つの指がタッチスクリーン上の共有中心点に向かって移動する1つ以上のピンチ操作( 「ピンチクローズ」 としても知られている )。 このイベントは、 iOSミラー 接続 されたHeartCore Robo Desktopを実行しているApple iOSデバイスなどの特定の環境でのみサポートされています 。 "zoom"
2つの指がタッチスクリーン上の共有中心点から離れて移動する1つ以上のズームイベント(ピンチ操作)( 「ピンチオープン」 としても知られている)。 このイベントは、 iOSミラー 接続されたHeartCore Robo Desktopを実行しているApple iOSデバイスなどの特定の環境でのみサポートされています 。 btn
- このパラメータは、クリック、プレス、リリース、ドラッグするマウスボタンを識別するために使用されます。 指定できる値は "left"
、 "middle"
および "right"
です。
modefiers
to=[x:<x>][,y:<y>]
"move"
の場合
マウスポインタ(ターゲットポイント)をどこに移動するかを定義します。 "click"
、 "press"
、
"release"
、 "wheelup"
または "wheeldown"
の場合、マウスポインタが最初にこの場所に移動され、その後、対応するアクションが実行されます。 "drag"
か "swipe"
の場合は、
マウスポインタが実際の位置(または from オプションで指定された位置 )からこのターゲット位置に ドラッグされます。 座標は ' x:<x>,y:<y>
'の 書式を持ち 、各座標はピクセル(例: 'x:225
')またはパーセンテージ(たとえば 'x:23.5%'
) で指定できます 。 xまたはyが省略されている場合は、現在のマウスポインタの位置が不足している座標を決定するために使用されます。
from=[x:<x>] [,y:<y>]
drag"
またはswipe"
の場合
、マウスポインタはこの位置から to オプションで 指定された座標にドラッグされます。 "click"
、 "press"
、
"release"
、 "wheelup"
または "wheeldown"
の場合 、このパラメータは無視されます。 座標は ' x:<x>,y:<y>
'の 書式を持ち 、各座標はピクセル(例: ' x:225
')または相対的なパーセンテージ(例: 'x:23.5%'
) で指定できます 。 相対座標は、整数でない場合は丸められます。 xまたはyが省略されている場合は、現在のマウスポインタの位置が不足している座標を決定するために使用されます。
center=[x:<x>] [,y:<y>]
- ピンチ/ズーム中心点(オプション)。 これは、 "pinch"
と "zoom"
アクションでのみ使用され ます。 パラメータを省略すると、アクションはデフォルトでスクリーン中心になります。
座標は ' x:<x>,y:<y>
'の 書式を持ち 、各座標はピクセル(例: ' x:225
')または相対的なパーセンテージ(例: 'x:23.5%'
) で指定できます 。 相対座標は、整数でない場合は丸められます。 xまたはyが省略されている場合は、現在のマウスポインタの位置が不足している座標を決定するために使用されます。
start=<number> end=<number>
- ピンチ/ズームの開始距離と終了距離。 これは、 "pinch"
と "zoom"
アクションでのみ使用されます。 パラメータは常に一緒に指定する必要があります。 省略された場合、アクションは中心点の位置と現在の画面サイズに基づいてデフォルト値を計算します。
距離は、ジェスチャの開始点( "start"
)および終了点( "end"
)において、 指が何画素離れているかを指定します。イベントが "pinch"
始点であるときは
、指が互いに近づくため、最初の距離よりも必然的に大きくなければなりません。 "zoom"
イベントは、逆の設定が必要です。 距離は、指がお互いに接近しすぎないように(最低でも30ピクセル)、または画面の境界線に10ピクセルより近くなるように指定する必要があります。
count=<number>
- マウスイベントが何回実行するか設定します。 デフォルト値は1です。この値はクリックイベントとホイールイベントでのみ意味を持ち、他のイベントタイプでは無視されます。
wait= <time>
- イベントが送信された後に待機する時間。 次のコマンドが " Wait <time>
" だった場合と同じ効果があります 。 値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。 デフォルト値は0です(待ちません)。 スクリプトは、_MOUSE_WAIT変数に望ましい遅延を設定するなどして、デフォルト値を設定することができます "Var _MOUSE_WAIT=1s"
など。
戻り値
たとえばI / Oエラーの場合、それが失敗したときに1、成功は0(ゼロ)を返します。
使用例
Mouse
click count=2
- 現在のマウスポインタの座標でマウスのダブルクリックを実行します。
Mouse move to=x:25,y:122
- マウスポインターを指定された座標に移動する
Mouse move to=x:{_MOUSE_X}+50
- マウスポインタを現在の位置から右に50ピクセル移動します。
Mouse drag from=x:10%,y:450 to=x:22.5%,y:450
wait=2s
x
は相対座標形式で与えられます。 ディスプレイの解像度が800x600ピクセルの場合、 ' x:10%
'は ' x:60
'と、 ' x:22.5%
'は ' x:135
'と同様です。 Mouse swipe from=x:161,y:124
to=x:161,y:226
Compareto "icon.png" method=search
onfail="Exit 1"
Mouse move to=x:{_SEARCH_X}+10,y:{_SEARCH_Y}+10
Mouse press
Mouse move to=x:{_SEARCH_X}+110
wait=500
Mouse release
Mouse pinch
- 画面をピンチします。 現在の接続がピンチをサポートしている場合、現在のアプリケーションをズームアウトします。
Mouse zoom center=x:220,y:450
start=125 end=180
- 画面を拡大します。 現在の接続がピンチをサポートしている場合、現在のアプリケーションを拡大表示します。 このコマンドは、カスタムの中心点と開始距離と終了距離を使用します。
説明 |
次へ | 前へ | トップ^ |
Type
コマンド機能に戻ります。 形式
Paste <text> [wait=<time>] [count=<number>]
*赤色は必須パラメータを示します
オプション
text
- ペーストするテキスト。 テキストにスペースまたは等号「=」が含まれている場合は、二重引用符で囲む必要があります(例:"これは スペース を含む テキストです")。 テキストに二重引用符を含める必要がある場合は、 "This is double quote -\" "のように先頭にバックスラッシュを置きます。二重引用符で囲まれたバックスラッシュを表示する必要がある場合は、 '\\"'と記載します。例えば、 "これはバックスラッシュの後に二重引用符を付けたものです - \\" " と書けばバックスラッシュと二重引用符がテキスト上で利用できます。
サポートされるテキスト文字は、デスクトップクライアント(プロトコル)によって適用される制限の対象です。 たとえば、RFB(VNC)プロトコルは、Latin-1(ISO 8859-1)文字セット以外の文字を転送することはできません。 逆に、ネイティブのJavaクライアントは、ローカルキーボード上で生成できる文字のみを、それらが属する文字セットに関係なく転送することができます。 詳細については、該当するクライアントドキュメントをお読みください。
wait=<time>
- テキストが貼り付けられた後に待つ時間。 次のコマンドが " Wait <time>
' だった場合と同じ効果があります 。 値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。
count=<number>
- コマンドを何回繰り返すべきか。 デフォルト値は1(1度だけペーストする)です。
戻り値
例えばI/Oエラーの場合、成功は0(ゼロ)失敗で1を返します。
使用例
Paste
"hello world!"
- 'hello world!'をペーストします。
説明 |
次へ | 前へ | トップ^ |
書式
Press [<modifier_1>+...+<modifier_N>+]<key|modifier>[location=<standard|numpad|left|right>] [release=<true|false>] [count=<number>] [wait=<time>]
オプション
key
キー名は 、 java.awt.event.KeyEvent
クラス内で 宣言され た キーコード定数 から内部的に導かれます。
ここで、識別子自体は VK_
接頭辞の後の文字列 です。
たとえば、 VK_ENTER
定数 があるため、キー名は「ENTER」、「Enter」または「enter」です。
KeyEvent Java Reflection
APIを使用して実行時にクラスから名前が実際に抽出されるため 、サポートされるキーの範囲は、HeartCore Robo Desktopを実行するために使用されるJavaのバージョンによって異なる場合があります。 サポートされているキー名の完全なマップは、サポートされている キーウィンドウ から取得できます 。
キーの前には、Ctrl + Alt + Deleteなどの「+」記号で区切られたShift、Alt、Ctrlの組み合わせを任意に組み合わせて前に付けることができます。 修飾子名では大文字と小文字は区別されません
名前に関しては、特定の物理的なキーや文字ではなくマッピングされることに注意してください。 たとえば、標準の ' - 'のマイナスキーを押すと、数字キーパッドのキーコードとは異なる内部キーコードが生成されます。 これらは、 "Press - " (標準)と "Press SUBTRACT location = numpad"
(数字パッド)の 2つのプレスコマンドでも表現できます 。
ほとんどの場合、ターゲットシステムは同じ方法でそれらを解釈しますが、障害が発生する可能性があります。 たとえば、control plus( "Press Ctrl ++" )が[Ctrlを押し、 '+'を押し、 '+'を離し、Ctrlを押す]のシーケンスとして生成されます。 このようなキーの組み合わせは、Shiftキーを押しながら標準の '+' ASCII文字(0x2b)を取得する必要がある米国のキーボードでは作成できないため、このシーケンスはデスクトップによって正しく解釈される場合と解釈されない場合があります。 キーが認識されない場合は、代わりに数字パッドを使用してみてください( "Ctrl + ADD location = numpad"を押してください )。 特定のキーパッドのキー名を取得するには、 サポートさ れているキーウィンドウを開き、 「キーを押す..」 テキストフィールドに フォーカスがある間にキーを押します。
パラメータもありますが、それがなくても動作します。
このコマンドは、キー名のほかに2.0.3以降のASCII文字も受け入れます。 " Press * "や "Press @"の ようなコマンドを使うことができます 。 さらに、 localion = "numpad"
パラメータを使用 して、これらの文字を数値キーボードにマッピングすることも できます。 たとえば、 「Press NUMPAD0」 を呼び出すために必要なテンキーパッドの「0」キーを押すと、 より直感的な「Press 0 location = numpad」もサポートされます 。 これは、ADD(プラス、 '+')、SUBTRACT(マイナス、 ' - ')、MULTIPLY(アスタリスク、 '*')、DIVIDE(スラッシュ、 '/')、DECIMAL 、 '。')とセパレータ(カンマ '、')など他の数字キーパッドにも適用されます。
location=<standard|numpad|left|right>
- キーの場所。
このオプションは、典型的なキーボードに複数回存在するキーでのみ意味があります。 そのようなキーの例は、数字キー '0'〜 '9'(標準位置と数字パッド)または修飾キー(キーボードの左右のCtrlとAlt)です。 サポートされている位置の値は standard
、(デフォルト) numpad
、 left
および right
です。
このコマンドは、[key、location]の対が意味をなさないかどうかを確認しないことに注意してください。 たとえば、アルファベットの文字はほとんどのキーボードに1個だけ存在し、唯一の論理的に有効な場所は default
標準のものです。 ただし、ほとんどのクライアントはヒントとしてのみ場所を使用し、適用されない場所ではキーで無視します。
release= <true|false>
- 2.3.4以降でサポートされています。 このパラメータが指定されている場合、完全なプレスリリースシーケンスではなく、キープレス(release = false)またはキーリリース(release = true)だけが実行されます。 これにより、長いキー押下および/または押されたプレスおよびマウスイベントの自動化が可能になります。 このパラメータを使用してプレスをシミュレートする場合は、キーがもう必要なくなったときにキーを適切に解放するようにしてください。
count=<number>
- キーを何回送信するか。 デフォルト値は1です。複数のプレス動作の間の遅延は、 プレスコマンドの ユーザー設定の値によって定義されます。
wait=<time>
- イベントが送信された後に待機する時間。 このパラメータは、サーバーが押されたキー/キーに反応するのに時間が必要な場合に便利です。 次のコマンドが " Wait <time>
' だった場合と同じ効果があります 。 値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。 デフォルト値は0です(待ちません)。 スクリプトは、たとえば、_PRESS_WAIT変数に希望の遅延時間を設定してデフォルト値を設定することができます "Var _PRESS_WAIT=1s"
。
戻り値
コマンドが成功の場合は0(ゼロ)、失敗したときに1を返します。
使用例
Press Ctrl+Alt+Del
- デスクトップのCtrl + Alt + Delキーを押します。
Press Tab count=5 wait=2s
- Tabキーを5回押すことをシミュレートし、2秒待ってから次のコマンドに進みます。
Press Ctrl location=right
- 右のCtrlキーを押します。
Var KEY_TO_PRESS=Alt+F4
<...>
Waitfor update area=x:340,y:220,w:240,h:160
extent=80% timeout=10s ontimeout="Var
KEY_TO_PRESS=Right"
Press {KEY_TO_PRESS}
wait=2s
Press
{KEY_TO_PRESS}
'コマンドはAlt + F4を使用して閉じられることを保証します。 ウィンドウが表示されない場合は、Altキーが押され、通常はウィンドウに何ら影響を与えません。 説明 |
次へ | 前へ | トップ^ |
Type
<text>
'と ' Press Enter
'の 組み合わせと同じ効果があります。 表記
Type <text>
[wait = <time>] [count = <number>]
typeline <text>
[wait = <time>] [count = <number>]
*赤色は必須パラメータを示します
オプション
text
- 入力するテキスト。 テキストにスペースまたは等号「=」が含まれている場合は、二重引用符で囲む必要があります(例:"これは スペース を含むテキストです")。 テキストに二重引用符を含める必要がある場合は、 "This is double quote - \" "のように先頭にバックスラッシュを置きます。二重引用符で囲まれたバックスラッシュを表示する必要がある場合は、 '\\"'例えば、 "これはバックスラッシュの後に二重引用符を付けたものです - \\" " のように記載します。
サポートされるテキスト文字は、デスクトップクライアント(プロトコル)によって適用される制限の対象です。 たとえば、RFB(VNC)プロトコルは、Latin-1(ISO 8859-1)文字セット以外の文字を転送することはできません。 逆に、ネイティブのJavaクライアントは、ローカルキーボード上で生成できる文字のみを、それらが属する文字セットに関係なく転送することができます。 詳細については、該当のクライアントドキュメントをお読みください。
wait=<time>
- テキストが入力された後に待つ時間。 このパラメータは、サーバーが押されたキー/キーに反応するのに時間が必要な場合に便利です。 次のコマンドが " Wait <time>
' だった場合と同じ効果があります 。 値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。 デフォルト値は0です(待ちません)。 スクリプトは、たとえば、_TYPE_WAIT変数または_TYPELINE_WAIT変数に希望の遅延時間を設定して、デフォルト値を設定することができます "Var
_TYPE_WAIT=1s"
。
location = <standard|numpad|left|right>
- キーの場所。 このコマンドを指定すると、入力された文字が指定されたキーボード位置にマップされます。 サポートされるのは対象位置の値がある standard
(デフォルト)、 numpad
、
left
と right
です。このオプションは、コマンドによって受け入れられる文字を含むキーボードのみの一部であり、テンキーで意味を持ちます。
このパラメータのサポートは、モバイルデバイスのテストを容易にすることを目的としています。 モバイルデバイス(特に携帯電話)の数字キーは、多くの場合、数字キーにマッピングされているため、プレスコマンドで各キーを処理するのは不便です。 たとえば、携帯電話に電話番号+0123456789を入力して呼び出すには、単に「 Typeline +0123456789 location = numpad」を使用し ます。
count=<unmber>
- コマンドを何回繰り返すか。 デフォルト値は1です(テキストを入力するか、行を1回入力してください)。
戻り値
例えばI/Oエラーの場合、成功の場合は0(ゼロ)、失敗は1を返します。
使用例
Type
hello
- 'hello'と入力します。
Typeline "mkdir /tmp/mydir" wait=2s
- アクティブなLinux / Unix端末ウィンドウでこれを実行すると、 mkdir
/tmp/mydir
'
OSコマンド が呼び出され、 2秒待ってから次のコマンドに進みます。
Type "100*4" location=numpad
- 数値キーボードで数式を入力します。
Typeline "+111222333444" location=numpad
- 数値キーボードで数式を入力し、Enterキーを押します。 テスト対象のシステムがnumパッドにキーボードがマッピングされたモバイルデバイスの場合、指定された番号に電話がかけられます。
説明 |
次へ | 前へ | トップ^ |
変数名 | 説明 |
_ALERT_BUTTON | ユーザーがウィンドウを閉じるために選択したボタンの名前 |
_ALERT_FIELD_ <n> | n番目の編集可能なテキストフィールドの値 |
_ALERT_FIELD_COUNT | 編集可能なフィールド数 |
Alert <text> [title=<text>] [buttons=<list>][fields=<list>][values=<list>][timeout=<time_value>] [location=x:<x_coord>,y:<y_coord>] [size=w:<width>,h:<height>]
*赤色は必須パラメータを示します
オプション
text
- 表示するテキスト。 <html>プレフィックスで始まる場合、HTMLコードとして扱われます。
title=<text>
- ウィンドウのタイトル(オプション)。
buttons=<list>
- ボタンのラベルまたはセミコロンで区切られたボタン名のリスト(オプション)。 選択したボタンの名前が_ALERT_BUTTON変数に返されます。 パラメータが指定されていない場合、ウィンドウには「OK」ボタンが1つ含まれます。
fields=<list>
- セミコロンで区切られたテキストフィールド名のリスト(オプション)。 これにより、ユーザーに値または値のセットの入力を要求するクエリを設計できます。
values=<list>
- 「fields」で指定されたテキストフィールドの値のセミコロン区切りリスト(オプション)。 同じ長さでなければなりません。
timeout=<time_value>
- ウィンドウ破棄タイムアウト(オプション)。 時間値でなければなりません。 指定しない場合、ウィンドウはユーザーが閉じるまで表示され続けます。
location=x:<x_coord>,y:<y_coord>
- 画面上のターゲットの場所(オプション)、例えば 「x:100、y:100」。 場所が指定されていない場合、ウィンドウは画面の中央に配置されます。
size=w:<width>,h:<height>
- ウィンドウサイズ(オプション)、例えば「w:300、h:350」。 サイズが指定されていない場合、ウィンドウはコンテンツに合わせてサイズ変更されます。
戻り値
このコマンドは、選択したボタンのインデックスを返します。最初のボタンは1です。
使用例
Alert "<html><body><center><h1>Login</h1></center>Please enter your credentials:</body></html>"
buttons="OK;Cancel" fields="User name;Password"
if ("{_ALERT_BUTTON}" == "OK") {
Var user="{_ALERT_FIELD_1}"
Var password="{_ALERT_FIELD_2}"
// Login code here
}
-ログインウィンドウの例 アラートは次のようになります。
説明 |
次へ | 前へ | トップ^ |
for
ループの右中かっこを囲んだ後、 すぐに最も内側のループを終了して最初のコマンドに進みます '}'
。 コマンドが for
ループ外で使用されている場合は 、構文エラーが報告されます。 continue
コマンドを使用します。 戻り値
コマンドは終了コードを変更せず、以前に実行したコマンドによって返された値を残します。
使用例
# Infinite
loop
for (;0==0; ) {
#
Wait for at least 20% update of the remote screen.
#
If it doesn't update for 10 seconds, break the loop.
Waitfor
update
extent=20% timeout="10s" ontimeout="break"
}
- for
、 Waitfor
そして break
の組み合わせを使用して、リモートデスクトップを更新するまで実行停止を保持します。
説明 |
次へ | 前へ | トップ^ |
Click <comparison_method>] [timeout=<time>] [cmparea=<[x:<x>][,y:<y>][,w:<width>][,h:<height>]>] [number= <component_number>] [move=<[x:<x>][,y:<y>]>] [btn=<button>][modifiers=modifier]
[count=<number>] [count=<true|false>] [step=<step_name>] [wait=<time>] [<method specific オプション> ]
*赤色は必須パラメータを示します
comparison_method
- サポートされるメソッドは次のとおりです。
timeout=<time>
- コンポーネントが画面に最大で表示されるまでの待機時間を指定するタイムアウト。 値は、ミリ秒数または有効な 時間値のいずれかでなければなりません 。 デフォルト値は30秒です。
cmparea=[x:<x>] [,y:<y>] [,w:<width>] [,h:<height>]
x:<x>,y:<y>,w:<width>,h:<height>
'の 書式を持ち 、各座標はピクセル単位(たとえば。 "x:225"
)またはパーセント 単位()で指定できます "x:23%"
。 x、y、幅または高さのいずれかが省略された場合、Robotはフルスクリーン値を使用して不足しているパラメータ( x:0, y:0,
w:<screen_width>, h:<screen_height>
) を決定します 。 - クリックを適用するための画面上のコンポーネントの通常の番号。 画面上のコンポーネント(オブジェクト)は、上から下、左から右の順にソートされます。 デフォルト値は1です(最初に配置されたコンポーネントをクリックします)。 画面上に見つかったコンポーネントの数が指定された数よりも少ない場合、コマンドはスクリプトを終了します。
- ターゲットオブジェクトの中心からのクリック位置を指定します(4.2以降)。 これにより、オブジェクト自体の代わりに近くの場所をクリックすることができます。 比較メソッドが image
パラメータである場合、イメージ クリックポイント がオーバーライドさ れ、イメージセンターが基点として使用されます。 たとえば、"Click image template=button.png move=x:-40"
のコマンドは ボタンセンターから左に40ピクセルをクリックします。
- クリックするマウスボタン。 指定できる値は "left"
、 "middle"
および "right"
です。
continue= <number>
-
、オブジェクトが見つからない場合(4.2以降)はtrue
の値ではスクリプトを終了しません。 デフォルト値は false
(失敗時に終了)です。 リリース4.4.2以降、コマンドは _CLICK_CONNECT
変数の 値も監視 し、デフォルト値として使用します。 たとえば、スクリプト内のすべてのClickコマンドをデフォルトでスクリプトを終了させないようにするには、最初の変数を true
( "Var _CLICK_CONTINUE=true"
)に 設定します 。
step=<step_name>
- Step コマンド との単純な統合 (4.2以降) これを指定すると、指定された名前のテストステップがpass(オブジェクトが見つかり、クリックされた)またはfail(オブジェクトが見つからない)の結果で作成されます。
- クリック後の待ち時間。 次のコマンドが " Wait
<time_in_ms>
' だった場合と同じ効果があります 。 値は、ミリ秒数または有効な 時間値のいずれかでなければなりません 。 デフォルト値は0です(待ちません)。 スクリプトは、_CLICK_WAIT変数に望ましい遅延時間を設定するなどして、デフォルト値を設定することができます "Var _CLICK_WAIT=1s"
。
Click image template=<image_collection> [passrate=<pass_rate_in_%>] [<search2_specific_params>] [< common オプション>]
*赤色は必須パラメータ
特定のオプション - 画像
template=<image_collectio>
- イメージコレクション -セミコロンで区切られた画像を1つまたは複数の画像ファイル名やフォルダ(「;」)リモートデスクトップの画像と比較します。
Linux / Unixでは、リストが誤って解析されるため、ファイル名にセミコロンが含まれていないことを確認してください。
ファイル名は、相対(例えば img.png
)か絶対(例えば /root/report/img.png
)のどちらかです。
相対パスを使用すると、イメージは _TEMPLATE_DIR変数で定義されたディレクトリで検索されます。
サポートされているイメージ形式はJavaバージョンの対象です。 Java 1.6以降では、PNG、JPG、GIF、およびBMPをサポートします。
テンプレートイメージは、指定されたリストの順序でリモートデスクトップイメージと比較されます。
テンプレートの比較で肯定的な結果(指定されたイベントに応じて一致または不一致のいずれか)が発生した場合、条件は満たされたとみなされ、コマンドは終了コード0で終了し、
リスト内の残りのテンプレートはスキップされます。
次に、あらかじめ 定義された変数_COMPARETO_TEMPLATE_INDEX
を使用して、一致するテンプレート画像のインデックスを決定することができます。
サポートされている変数の完全なリストについては、 画像比較固有の変数 を 参照ください。
passrate=<pass_rate_in _%>
- 画像比較の合格率。
0から100までの数字でなければならず、任意にパーセント記号(たとえば、"passrate=95"
または "passrate=95%"
)を設定できます。
このパラメータを省略すると、デフォルトのsearch2合格率50%が使用されます。
search2_specific_params
- search2 比較メソッドで サポートされているすべてのパラメータ (オプション)。
Click object [< object_specific_オプション >] [< common オプション >] 。
特定のオプション - オブジェクト
object_specific_params
- オブジェクト 比較メソッドで サポートされているすべてのパラメータ (オプション)。 通常、少なくともオブジェクトの色を指定する必要があります。
Click ocr [<tocr_specific_オプション>] [<common オプション>]
特定のオプション - OCR
tocr_specific_オプション
- tocr 比較メソッドで サポートされているすべてのパラメータ 。 クリックを テキストまたはパターンオプションの いずれかに適用するにはターゲットテキストを指定する必要があります。
戻り値
コマンドが常に成功すると0を返すか、失敗した場合に、指定された比較メソッドからエラーコードを返しスクリプトを終了します。
Click image template="google_button.png"
number="2"
- 画面上のgoogle_button.png
画像で 指定された2番目のボタンをクリックし ます。 ボタンが見つからないか、または画面上のボタンの数が2より小さい場合、コマンドはスクリプトに失敗します。
Click object tolerance="10"
color="255;0;0" max="w:20"
- 赤色で幅が20ピクセル以下のオブジェクトをクリックします。 toleranceを利用するとより多くの赤色を見つけることができます。
Click
ocr
text="Cancel" distance="1"
- OCRを使用して画面上のテキストを読み取り、「キャンセル」という言葉をクリックします。 このdistanceは、OCRエンジンが「Cancal」などの1文字を認識しない、または認識しなくても、単語が見つかるようにできます。
説明 |
次へ | 前へ | トップ^ |
_COMPARETO_
は次のよう に 接頭辞付き変数のセットを入力します。変数名 | 説明 |
_COMPARETO_TEMPLATE = <file> |
最後の画像比較に使用される画像ファイル(絶対パス)。 |
_COMPARETO_RESULT = <number> |
比較結果のパーセンテージ。 これは常に0〜100の数値 です。比較に使用されるメソッドが出力 結果を サポートしている場合 、イメージがどのくらい一致したかが示されます。 |
_COMPARETO_PASS_RATE = <number> |
最後の画像コンパイルに使用された合格率パーセンテージ。 それは 、常に0〜100の数値です。 |
_COMPARETO_TIME_IN_MS = <ミリ秒> |
イメージ比較で費やされた時間(ミリ秒)。 テンプレートのリストがある場合 、その値は実行されたすべての 比較時間を表します。 |
_COMPARETO_TEMPLATE_INDEX = <number> |
パス結果 を生成したテンプレートリスト内のテンプレートのインデックス 。 インデックスはゼロから始まります。 |
_COMPARETO_TEMPLATE_WIDTH = <number> _COMPARETO_TEMPLATE_HEIGHT = <number> |
比較に成功すると、変数には一致する テンプレート画像のディメンジョンが含まれます。2.0.2以降でサポートされています。 |
_COMPARETO_SOURCE_X = <number> _COMPARETO_SOURCE_Y = <number> |
最後に比較されたテンプレートのソース座標。 これらの変数 は、バージョン2.2以降で作成されたテンプレートに対してのみ設定されます。 詳細については、 画像メタデータの章を参照してください。 |
_COMPARETO_CLICK_X = <number> _COMPARETO_CLICK_Y = <number> |
最後に比較されたテンプレート画像のクリック点。 座標は、デフォルト では、「search」画像 比較アルゴリズムまたはカスタム相対 位置を介して配置されたコンポーネントの中心を指します 。 詳細については、 画像メタデータ の章を参照してください。 |
変数名 | 説明 |
_COMPARETO_SORT_MODE = <number> |
ディレクトリから読み込まれたテンプレートイメージに適用されるソートモード。 詳細については、 イメージコレクションの 章を参照してください。 |
Fallback
フォールバックプロシージャ を参照してください 。レポートコマンドで 書式
compareto <image_collection> [passrate=<pass_rate_in_%>] [onpass=<command>] [onfail=<command>] オプション
image_collection
- image_collection -セミコロンで区切られた画像を1つまたは複数の画像ファイル名やフォルダ(「;」)リモートデスクトップの画像と比較します。 Linux / Unixでは、リストが誤って解析されるため、ファイル名にセミコロンが含まれていないことを確認してください。 ファイル名は、相対(例えば img.png
)か絶対(例えば /root/report/img.png
)の どちらか です。 相対パスを使用すると、イメージは _TEMPLATE_DIR変数で 定義されたディレクトリで検索されます。 サポートされているイメージ形式はJavaバージョンの対象です。 Java 1.6以上でPNG、JPG、GIF、およびBMPをサポートします。
テンプレートイメージは、指定されたリストの順序でリモートデスクトップイメージと比較されます。 テンプレートの比較で肯定的な結果(指定されたイベントに応じて一致または不一致のいずれか)が発生した場合、条件は満たされたとみなされ、コマンドは終了コード0で終了し、リスト内の残りのテンプレートはスキップされます。 _COMPARETO_TEMPLATE_INDEX
次に、あらかじめ 定義された変数 を使用して、一致するテンプレート画像のインデックスを決定することができる。 サポートされている変数の完全なリストについては、 画像比較固有の変数 を 参照してください 。
passrate = <pass_rate_in _%>
- 画像比較の合格率。 0から100までの数字でなければならず、任意にパーセント記号(たとえば、 "passrate=95"
または "passrate=95%"
)を 続けてもかまいません 。 このパラメータを省略すると、メソッドまたはHeartCore Robo環境設定で定義されたデフォルトの合格率が使用されます(デフォルト値は 「デフォルト」では 95%
、 「検索」
および 「 検索2」の方法 では100%です )。
onpass = <command>
onfail = <command>
method = <comparison_method>
methodparams=<custom_params>
cmparea=[x:<x>][,y:<y>][,w:<width>][,h:<height>]
x:<x>,y:<y>,w:<width>,h:<height>
'の 書式を持ち 、各座標はピクセル単位(たとえば。 "x:225"
)またはパーセント 単位("x:23%"
)で指定できます。 x、y、幅または高さのいずれかが省略された場合、HeartCore Robo4.4はフルスクリーン値を使用して不足しているパラメータ( x:0, y:0,
w:<screen_width>, h:<screen_height>
) を決定します 。 method_specific_params
戻り値
コマンドは、比較が成功すると 0(ゼロ)を返し、失敗した場合は1を返し、テンプレートイメージが見つからないか読み取れない場合は2を返します。
使用例
Compareto
netscape.png
passrate=95% onfail="exit 1"
- netscape.png
"デフォルトの"イメージ比較方法を使用して 、現在のリモートデスクトップのイメージ をイメージと比較します。 95%以上一致しない場合は、 Exit
コマンドを 使用してスクリプトの実行を終了し、終了 コード1を返します。
Compareto
button1.png;button2.png method=search
if ({_EXIT_CODE} == 0) {
Mouse
click to="x:{_SEARCH_X}+5,y:{_SEARCH_Y}+5"
}
- リモートデスクトップイメージで、 button1.png
またはbutton2.png
に 一致するボタンを検索します 。 見つかった場合は、それをクリックします。 コマンドはxとyの座標に5ピクセルを追加して、ボタンの中央をクリックします。
Compareto "search.png" method="search"
for (i=1; {i}<{_SEARCH_MATCH_COUNT}+1; i={i}+1) {
#
Nested variables compose the variable names of a suffix and
an index
Mouse
click
to=x:{_SEARCH_X_{i}},y:{_SEARCH_Y_{i}}
}
Var _TOCR_LINE_COUNT=0
Compareto
method
="tocr" cmparea="x:33,y:2,w:200,h:22"
for (i=1; {i}<{_TOCR_LINE_COUNT}+1; i={i}+1) {
Typeline
"{_TOCR_LINE{i}}"
}
Compareto
method
="tocr" cmparea="x:33,y:2,w:200,h:22"
pattern="[aA]pplication.*"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- Teseract OCRで認識されたテキストが「アプリケーション」または「アプリケーション」のいずれかの単語で開始しない場合は、正規表現を使用してスクリプトを終了します。
Compareto
method
="object" color="FF0000"
draw="true"
Compareto circle.png
method="object"
color="00FF00"
tolerance="100"
passrate="80%"
draw="true"
rotations="30"
説明 |
次へ | 前へ | トップ^ |
for
ループ1回分をスキップし ます。 コマンドが for
ループ外で使用されている場合は 、構文エラーが報告されます。
4.1.3以降でサポートされています。 for
ループ全体を中断(終了)するには、 break
コマンドを 使用します。 戻り値
コマンドは終了コードを変更せず、以前に実行したコマンドによって返された値を残します。
使用例
# Increment X
for each even loop (the resulting SUM will be 5)
Var SUM=0
for (i=0; i<10; i={i}+1) {
if ({i} % 2 == 1) {
continue
}
Eval
SUM={SUM}+1
}
説明 |
次へ | 前へ | トップ^ |
変数名 | 説明 |
_DATE | 指定されたフォーマットでフォーマットされた出力日付。 |
_DATE_MS | 1970年1月1日UTCから経過したミリ秒単位の出力日。 |
Date [date=<date>] [informat=<pattern>][outformat=<pattern>][add=<time_value>][var=<name>]
オプション
date=<date>
- 入力日付文字列(オプション)。 指定しない場合、コマンドはデフォルトで現在の日付になります。
informat=<pattern>
- 入力日付の解析に使用されるjava.text.SimpleDateFormat準拠の形式(オプション)。 指定しない場合、コマンドはデフォルトで[プリファレンス]ウィンドウの[言語]画面で指定された_DATE形式になります。
outformat=<pattern>
- 入力日付の解析に使用されるjava.text.SimpleDateFormat準拠の形式(オプション)。 指定しない場合、コマンドはデフォルトで[プリファレンス]ウィンドウの[言語]画面で指定された_DATE形式になります。
add=<time_value>
- 入力日付に加算または減算する時間値(オプション)。 たとえば、「-1d」の値は1日を減算します。
var=<name>
- 出力日付を保存する変数名(オプション)。 デフォルトは_DATEです。
戻り値
コマンドは0(成功)または1を返します。形式が無効であるか、入力された日付の解析に失敗した場合です。
使用例
Date outformat="EEEE d MMMM y" var="TODAY"
- 今日の日付を指定した形式でTODAY変数に保存します(例:「水曜日2020年5月13日」)。
Date add="-1d" outformat="EEEE" var="YESTERDAY"
- 昨日の曜日名を "YESTERDAY"変数に保存します(例: "Tuesday")。
Date date="2020-05-08T00:00:00.000Z" informat="yyyy-MM-dd'T'HH:mm:ss.SSS" outformat="d/M/y" var="ISODATE"
- 指定されたISO日付を解析し、単純な日/月/年の形式で「ISODATE」変数に保存します。
説明 |
次へ | 前へ | トップ^ |
Drag <comparison_method> [shift=x:<relativeX>,y:<relativeY>] [template2=<target_component_template>] [number2=<target_component_number>] [timeout=<time>] [cmparea=<[x:<x>][,y:<y>][,w:<width>] [,h:<height>]>] [number=<component_number>] [btn=<button>][modifiers=<modifiers>] [count=<number>] [continue=<true|false>] [step=<step_name>] [wait=<time>]
[<method specific オプション>]
*赤色は必須パラメータを示します
comparison_method
- サポートされるメソッドは次のとおりです。
timeout=<time>
- コンポーネントが画面に最大で表示されるまでの待機時間を指定するタイムアウト。 値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。 デフォルト値は30秒です。
cmparea=[x:<x>][,y:<y>][,w:<width>][,h:<height>]
x:<x>,y:<y>,w:<width>,h:<height>
'の 書式を持ち 、各座標はピクセル単位(たとえば。 "x:225"
)またはパーセント 単位( "x:23%"
)で指定できます。 x、y、幅または高さのいずれかが省略された場合、HeartCore Roboはフルスクリーン値を使用して不足しているパラメータ( x:0, y:0,
w:<screen_width>, h:<screen_height>
) を決定します 。 - ドラッグを適用する画面上のソースコンポーネントの通常の番号。 画面上のコンポーネント(オブジェクト)は、上から下、左から右の順にソートされます。 デフォルト値は1です(最初に配置されたコンポーネントをドラッグします)。 画面上に見つかったコンポーネントの数が指定された数よりも少ない場合、コマンドはスクリプトを終了します。
- クリックするマウスボタン。 指定できる値は "left"
、 "middle"
および "right"
です。
modifiers= <modifiers>
shift=x:<relativeX>,y:<relativeY>
- 現在の場所からコンポーネントをドラッグする場所を指定する相対座標。 ターゲット(ドロップ)の位置は、 template2を使用して代替指定することができます 。
template2=<target_component_template>
- ドロップコンポーネント。 このコマンドを 指定すると、指定されたコンポーネントの search2 を 使用してイメージ検索が実行され、オブジェクトがその場所にドラッグされます。 数値2のパラメータは、画面上の2つ以上が存在する場合、ドロップ対象の数を指定するために使用されます。template2が 指定された場合はシフトパラメータが存在してはいけません。
number2=<target_component_number>
- ターゲットコンポーネントの通常番号。 画面上のコンポーネント(オブジェクト)は、上から下、左から右の順にソートされます。 デフォルト値は1です(最初に配置されたコンポーネントのドロップ)。 画面上に見つかったコンポーネントの数が指定された数よりも少ない場合、コマンドはスクリプトを終了します。template2パラメーターと対で使用します。
continue=<number>
- 値がtrue
で 、オブジェクトが見つからない場合(4.2以降)はスクリプトを終了しません。 デフォルト値は false
(失敗時に終了)です。
リリース4.4.2以降、コマンドは _DRAG_CONNECT
変数の値も監視 し、デフォルト値として使用します。
たとえば、スクリプト内のすべてのDragコマンドをデフォルトでスクリプトを終了させないようにするには、最初の変数を true
( "Var_DRAG_CONTINUE=true"
)に
設定します 。
step=<step_name>
- Step コマンドとの単純な統合 (4.2以降) これを指定すると、pass(オブジェクトが見つかり、ドラッグされた)またはfail(オブジェクトが見つからない)の結果を持つ、指定された名前のテストステップが作成されます。
Wait=<time>
- クリック後の待ち時間。
次のコマンドが " Wait=<time_in_ms>
' だった場合と同じ効果があります。値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。 デフォルト値は0です(待ちません)。 スクリプトは_DRAG_WAIT変数に所望の遅延時間を設定するなどして、デフォルト値を設定することができます "Var _DRAG_WAIT=1s"
。
Drag image template=<image_collection> [passrate=<pass_rte_in%>] [<search2_specific_params>] [<common オプション>]
*赤色は必須パラメータを示します
特定のオプション - イメージ
template=<image_collection>
- イメージコレクション -セミコロンで区切られた画像を1つまたは複数の画像ファイル名やフォルダ(「;」)リモートデスクトップの画像と比較します。 Linux / Unixでは、リストが誤って解析されるため、ファイル名にセミコロンが含まれていないことを確認してください。 ファイル名は、相対(例えば img.png
)か絶対(例えば /root/report/img.png
)の どちらか です。 相対パスを使用すると、イメージは _TEMPLATE_DIR変数で 定義されたディレクトリで検索されます。 サポートされているイメージ形式はJavaバージョンの対象です。 Java 1.6以降では、PNG、JPG、GIF、およびBMPをサポートします。
テンプレートイメージは、指定されたリストの順序でリモートデスクトップイメージと比較されます。 テンプレートの比較で肯定的な結果(指定されたイベントに応じて一致または不一致のいずれか)が発生した場合、条件は満たされたとみなされ、コマンドは終了コード0で終了し、リスト内の残りのテンプレートはスキップされます。 次に、あらかじめ 定義された変数_COMPARETO_TEMPLATE_INDEX
を使用して、一致するテンプレート画像のインデックスを決定することができます。 サポートされている変数の完全なリストについては、 画像比較固有の変数 を 参照してください 。
passrate=<pass_rate_in _%>
- 画像比較の合格率。 0から100までの数字でなければならず、任意にパーセント記号(たとえば、 "passrate=95"
または "passrate=95%"
)を 続けてもかまいません 。 このパラメータを省略すると、デフォルトのsearch2合格率50%が使用されます。
search2_specific_params
- search2 比較メソッドで サポートされているすべてのパラメータ (オプション)。
Drag object [<object_specific_オプション>] [<common オプション>]
特定のオプション - オブジェクト
object_specific_params
- オブジェクト 比較メソッドで サポートされているすべてのパラメータ (オプション)。 通常、少なくともオブジェクトの色を指定する必要があります。
Drag ocr[< tocr_specific_オプション >] [< common オプション >]
特定のオプション - OCR
tocr_specific_オプション
- tocr 比較メソッドで サポートされているすべてのパラメータ 。 クリックをテキストまたはパターンオプションのいずれかに適用するには、ターゲットテキストを指定する必要があります。戻り値
Drag image template="lever.png"
shift="x:100"
- 最初のレバーコンポーネントを画面上で見つけ、100ピクセル右にドラッグします。
Drag image template="column.png"
number="2"
template2="column.png"
number2="3"
- 2つのテーブル列のスワップの例。 このコマンドは、テーブル内の2番目の列ヘッダーを探し、3番目の列ヘッダーにドラッグします。 列が見つからないか、または画面上の列の数が3より小さい場合、コマンドはスクリプトの失敗となり、一定時間後に終了します。
Drag object tolerance="10"
color="0;255;0" max="w:20,h:20"
shift="x:50,y:-100"
- 20x20ピクセル以下の緑色のオブジェクトを見つけ、それを右に50ピクセル、上に100ピクセルドラッグします。 公差は、メソッドがより多くの緑色を見つけることを保証する。
Drag ocr text="Flower"
shift="y:220"
- OCRを使用して画面上のテキストを読み取り、「Flower」の単語を220ピクセル下にドラッグします。
説明 |
次へ | 前へ | トップ^ |
形式
Eval <var_name_1> = <numeric_expression_1>[<var_name_2>=<numeric_expression_2> ... <var_name_N>=<numeric_expression_N>]
*赤色は必須パラメータを示します
オプション
var_name
- 変数の名前。 名前は大文字と小文字が区別されます。スペースは使用しないでください。
numeric_expression
- 引数にあるすべての変数呼び出しが解決された後に数値式または文字列に変換されます。 スペースが含まれている場合は、二重引用符で囲む必要があります(例: "1 + 1")。 式構文とサポートされている数値演算子の詳細については、このマニュアルの 「 数値式 」の章を参照してください 。
戻り値
バージョン2.3.2までの評価コマンドは常に0(ゼロ)を返します。 バージョン2.3.3以降では、数値式が正しく評価された場合は0が返されます。
存在しない変数の呼び出しが含まれる場合など、式が評価できない場合は0以外の値が返されます。 このメカニズムにより、値が正しく入力されたかどうかをテストし
、_EXIT_CODE変数値をチェックする if/elseステートメントで コードを分岐させることができます。
使用例
Eval
POSITION=2*(10+1)
- 値22の可変POSITIONを作成します。
Eval
SUM={SUM}+10
if ({_EXIT_CODE} !=
0) {
Exit
1
}
- 既存のSUM変数を10増加します。変数が存在しない場合、スクリプトは終了コード1で終了します。
Var
A=1
B=2
C=3
// As Var
resolves the variable calls and concatenates
// the strings
the ABC1 value will be a string of "123+1".
Var
ABC1="{A}{B}{C}+1"
// As Eval resolves
the variable calls and evaluates the result
// as a
numeric expression the ABC2 value will be "124".
Eval ABC2="{A}{B}{C}+1"
説明 |
次へ | 前へ | トップ^ |
'ls -l'
(Unix/Linuxの場合)などの単一のコマンドでなければなりません 。 Javaと基礎となるOSパイプとの間のインタフェースの制限と、出力のリダイレクトがコマンドで許可されていないため。 出力をファイルに保存する必要がある場合は、outfile
パラメータを使用します。パイプやリダイレクトを使用する必要がある場合は、コマンドをシェルスクリプトまたはバッチファイルに入れ、代わりにExecコマンドを呼び出すようにします。 Exec
コマンドにインタプリタを指定する必要があります。
これは、同様のコマンドに適用され dir
、
cd
、 copy
、 md
、 mkdir
、 rd
、 rmdir
、 del
、 erase
などのコマンドの完全なリストは、Windowsシステムに依存しており、Microsoftのサイトから入手できます。
もう一つの良い情報源は、
wikipedia の COMMAND.COMページ です。
シェル上の'dir'
コマンドをWindows上 で実行する例は 次のようになります: Exec "command.com /C dir"
Exec "cmd.exe /C dir"
'list.bat'
の呼び出しを示しています。
バッチファイルは、ディレクトリをパラメータとして受け取り、その内容を呼び出されたファイルにリストします dir.txt
。 スクリプトパスにはスペースが含まれている可能性があるので、バッチファイルとパラメータの両方を二重引用符で囲む必要があります。これらはスクリプトコマンドの引数の中にあるためエスケープする必要があります。 list.bat
file: @echo off
dir %1 > %1\dir.txt
Exec "\"{_SCRIPT_DIR}\list.bat\" \"C:\Program
Files\" "
_EXEC_
接頭詞につながる 、次のような4つのプレフィックス変数を設定します。 構文
オプション
command
- ローカルシステム上で実行されるOSコマンド。 OS固有の詳細 については、 コマンドの説明 を 参照して ください。
count=<number>
nowait=<false|true>
false
です。 true
の値がExecコマンドに設定されている場合、結果を待つことはなく、テストスクリプトはプロセスの開始直後に続行されます。
_EXEC_OUTPUTおよび_EXEC_ERROR変数は、Execコマンドが呼び出し元のスクリプトに制御を戻すときに出力が不明であるため、入力されません。
基礎となるOSが指定されたコマンドを開始できず、すぐにHeartCore Roboに報告する場合、_EXEC_ERROR変数が作成されることがあります。
onpass=<command>
if/else
は、 Exec
コマンドの戻り値に 基づいて プロシージャまたは 構成を 使用します 。 onfail=<command>
if/else
は、 Exec
コマンドの戻り値に 基づいて プロシージャまたは 構成を 使用します 。 outfile = <file name>
outfile="{_SCRIPT_DIR}\out.txt"
。 wait=<time>
"Var _EXEC_WAIT=1s"
。 kill=<processes>
_EXEC_PROCESS_ID
変数 からプロセス番号を知ることができ ます。
// Start myapp.exe and save its ID
Exec "myapp.exe"
nowait="true"
Var
MYAPP_ID="{
_EXEC_PROCESS_ID}"
...
Exec
kill="{MYAPP_ID}"
Exec "cmd.exe /C taskkill /F /IM firefox.exe"
autokill=<false|true>
false
(プロセス終了しない)です。 戻り値
コマンドは失敗せずに実行完了の場合0(ゼロ)、そうでなければOSのコマンドの終了コードを出力します。
使用例
Exec
"ls -l"
- 現在のディレクトリの内容を一覧表示します(Unix / Linux)。 このリストは、_EXEC_OUTPUT変数の下で使用できます。
Exec "date"
Screenshot
image.png
desc="This screenshot was taken on {_EXEC_OUTPUT}."
- date
date OSコマンドを 使用して 、タイムスタンプをスクリーンショットの説明(Unix / Linux)に挿入します。
Exec "C:\Program Files\Internet Explorer\iexplore.exe
http://www.google.com"
Exec "rundll32
url.dll,FileProtocolHandler http://www.google.com"
- どちらのコマンドもWindows上でInternet Explorerを起動し、Googleサイトを開きます。
Report index.html
Exec "mozilla
file://{_REPORT_FILE}"
- HTMLレポートを作成し、ローカルマシン上のMozillaブラウザで開きます。 _REPORT_FILE変数には、 レポート コマンド が入力され、 完全なレポートファイルパスが含まれます。
// Directory to work with.
Var
DIR=/tmp
//
List the directory contents (Linux/Unix).
//
For Windows replace the "ls" command with "cmd.exe /C dir
/B"
Exec
"ls {DIR}"
// Split
the directory
listing
by lines
String
split
"{_EXEC_OUTPUT}" pattern="\r?\n"
for (i=1; {i}<{_STRING_COUNT}+1; i={i}+1) {
//
Replace
floating
point from
index (not
needed on
2.3.3+)
String
replace
"{i}" pattern="[.].*"
replacement=""
Var
f="{_STRING{i}}"
// If the
file is
a .png or
a .jpg image display it for 3 seconds
if ("{f}" endswith ".png" ||
"{f}" endswith ".jpg") {
Connect
"file://{DIR}/{f}"
Wait
3s
}
}
説明 |
次へ | 前へ | トップ^ |
構文
exit <exit_code_number>
[scope = <process|file|procedure|block>] [desc=<description>]
オプション
exit_code_number
- 強制終了コード。 整数でなければなりません。 0の値は通常、成功を示すために使用され、ゼロ以外の値はエラーまたは予期しない結果または動作を示します。 コマンドが呼び出されてスクリプト全体が終了し、 レポート コマンドで 作成されたレポートファイル がある場合、0の終了コードが "passed / successful"と表示され、その他のコードはすべて失敗として表示されます。 終了コードは、基盤となるオペレーティングシステムにも渡され、サードパーティのフレームワークによるスクリプト終了の理由の特定に使用できます。
process
、スクリプトの実行を終了させる 値です 。 実行が自動化されたもので、実行中の自動プロセスがなくなった場合、JVM(Java Virtual Machine)も終了し、指定された終了コードを基になるオペレーティングシステムに返します。 file
は、現在実行されているファイルを終了します。 「 Run 」コマンドを使用して別のスクリプトからスクリプトを
実行すると、呼び出されたスクリプトのみが終了し、制御がマスタースクリプトに戻されます。 procedure
は最も内側のプロシージャを終了させます。
どのプロシージャも実行されていない場合、終了コマンドは無視されます。
コードの最も内側の構造化ブロックからコマンドが呼び出されると、
そのステートメントは無視されます。 block
if/else
for
desc = <description>
process
ます。 このコマンドは、レポートフレームワーク( エンタープライズレポートプロバイダなど ) が選択して表示する_EXIT_DESC変数の下に説明を保存します。
戻り値
このコマンドは、引数として指定された終了コードを返します。
使用例
Exit
10
- 実行されたスクリプトを終了し、終了コードとして10を返します。
Typeline myapplication
Waitfor update extent=40%
timeout=20s ontimeout="Exit 2"
cumulative=true
- これは Exit
コマンドの 一般的な使用方法です 。 これは、 myapplication
端末ウィンドウから 呼び出さ れた GUIアプリケーションを起動したときの状況を示してい ます。 さんがいるとしましょう myapplication
ウィンドウが画面サイズの少なくとも40%に相当する固定サイズを持っています。 GUIが正常に起動すると、スクリプトは続行されます。 Waitfor
コマンドは、そうでなければ20秒待ってから2の終了コードでテストスクリプトを終了します。
説明 |
次へ | 前へ | トップ^ |
オプション
アクション
戻り値
コマンドは常に0(ゼロ)を返します。
使用例
Imagedoctor
off
- Image Doctorをオフにします。 イメージ比較の失敗は、再びオンになるまで処理されません。
Imagedoctor skip
Compareto
method
="tocr" cmparea="x:33,y:2,w:200,h:22"
Compareto
"search.png"
method=
"search2"
- イメージ・ドクター・ウィザードがOCRの最終的な障害を無視するようにします。 2番目の「search2」の比較は「スキップ」アクションの範囲外であり、イメージドクターがオンであれば障害発生時に処理されます。
説明 |
次へ | 前へ | トップ^ |
'-v'
CLIオプション を使用して外部からライブラリ名を渡すことができます。 オプション
file
- TPRテストスクリプトファイルまたは含まれるJavaリソース(JAR / ZIPファイルまたはクラスパス)。 ファイル名は、相対(例えば sayHello.tpr
)か絶対(例えば /root/scripts/sayHello.tpr
)の どちらか です。 HeartCore Roboは、ファイルが存在するかどうかをチェックし、すべての スクリプトのコンパイル 中に読み取り可能であり、そうでない場合はエラーを報告します。 ファイルは、変数を使用して指定することもできます(例を参照)。
戻り値
コマンドは常に0(ゼロ)を返します。 指定されたファイルが見つからない場合、HeartCore Roboはゼロ以外の戻り値を返すのではなく構文エラーを報告します。
使用例
Include
sayHello.tpr
- sayHello.tpr
このコマンドを呼び出すスクリプトと同じディレクトリにある、 呼び出されたスクリプトからすべての変数とプロシージャをロードします 。
Include
/root/scripts/sayHello.tpr
- /root/scripts/
sayHello.tpr
ディレクトリに
あるスクリプトからすべての変数とプロシージャをロードします 。
Var
PROFILE=profile1.tpr
Include {PROFILE}
'-v PROFILE=profile2.tpr'
などを使用してCLIから別のスクリプトを組み込むことができます 。
Include C:\projects\TestLib\testlib.jar
Run mypackage.MyTestScript
- 指定された場所からJavaライブラリ(JARファイル)をロードし、そこからテストスクリプトを実行します。 これは、有効なJavaテストスクリプトであるMyTestScriptというコンパイル済みクラス( DefaultJavaTestScript クラスを 拡張する か、少なくとも JavaTestScript インターフェイスを 実装する )を 持つ "mypackage"というパッケージ(ディレクトリ)をJARファイルが含んでいることを前提としています 。 詳細については、 以下の 「 実行」コマンドを 参照ください。
説明 |
次へ | 前へ | トップ^ |
'Exit 1'
)で スクリプトを終了する ことですが、一部のテストスイートでは責任者に電子メールを送信し、実行を一時停止した後、人手を待つものもあります。 オプション
説明
- スクリプトを一時停止した理由とログ(オプション)。 この説明は、レポートに表示され(定義されている場合)、CLIモードの実行時にはコンソールに出力されます。
戻り値
コマンドは常に0(ゼロ)を返します。
使用例
Compareto
"application.png"
if ({_EXIT_CODE} > 0) {
#
Cry for help - send a screenshot via E-mail and pause
Screenshot runaway.png
Sendmail to="tester@dummyserver.com"
from="robot@dummyserver.com" server="mail.dummyserver.com"
subject="Runaway behavior detected - see attached
picture. Please help!" attach="{_REPORT_DIR}/runaway.png"
Pause
"Runaway
behavior detected"
}
- 画像の比較に失敗した場合は、スクリーンショットを電子メールでテスターに送信し、実行を一時停止します。
説明 |
次へ | 前へ | トップ^ |
Run
コマンドが終了するとスコープが設定されたExit
コマンドを使用して、実行されたスクリプトからメインスクリプト に戻ることができます。<java-home>\lib\ext
(Windows)または <java-home>/lib/ext
(Linux / Unix)に JARファイルを入れます 。 これにより、このインストールから開始されたすべてのJavaインスタンス(およびすべてのRobotインスタンス)でコードを使用できるようになります。 Run
コマンドは、コードの一般的なスニペット(ライブラリ)を実装するため、または個々のテストケースのテストコードを分離するために効果的に使用できます。 バージョン2.2で提供されたJavaサポートの拡張により、パラメータ化されたJavaルーチンのライブラリを実装し、TPRスクリプトからそれらを呼び出すことができます。 これは、プラグインのメカニズムを使わずにスクリプト言語にカスタム機能を追加する効率的な方法です。 オプション
file
sayHello.tpr
)またはabsolute( /root/scripts/sayHello.tpr
)に 関連するファイルでもかまいません 。 HeartCore Roboは、ファイルが存在するかどうかをチェックし、すべてのスクリプト検証中に読み取り可能であり、そうでなければエラーを報告します。 org.mytests.DoSomething
)。 指定されたクラスはJavaクラスパス上になければなりません。 詳細については、 コマンドの説明 を参照してください
。 <param>=<value>
- オプションのパラメータとその値のリスト。 実行されたファイルはローカル変数の形で利用可能になります。
戻り値
Run
は、最後に実行されたコマンドによって返されたコードを常に返します。 指定されたファイルが見つからない場合、HeartCore Roboはゼロ以外の戻り値を返すのではなく構文エラーを報告します。
使用例
Run
sayHello.tpr
- sayHello.tpr
このコマンドを呼び出すスクリプトと同じディレクトリにある sayHello.tprというスクリプトを実行します 。
Run
/root/scripts/sayHello.tpr
-
/root/scripts/
ディレクトリにあるsayHello.tprという名前のスクリプトを実行します。
Run
/root/scripts/MyTest.java
- 指定されたJavaソースコードファイルを実行します。 com.tplan.robot.scripting.DefaultJavaTestScriptを 拡張するクラスである
か、少なくとも com.tplan.robot.scripting.JavaTestScript
インターフェイスを 実装 するクラスでなければなりません 。 このファイルは、まずJavaコンパイラAPIを使用してバイトコード形式にコンパイルされ、インスタンス化されて実行されます。 これは、HeartCore Robo DesktopがJDKディストリビューションからJava上で実行されるか、またはJDKインストール(v2.3.3以降)への有効なパスで構成されている場合にのみ機能します。
Run com.testsuite.MyDummyTestScript
server="rfb://localhost:5901"
pass="welcome"
- Javaテストスクリプトクラスをインスタンス化して実行します。 クラスはJavaクラスパス上になければならず、 com.tplan.robot.scripting.DefaultJavaTestScriptを 拡張する か、少なくとも com.tplan.robot.scripting.JavaTestScript インタフェースを 実装する必要があります。 コマンドライン上の2つのパラメータは、変数としてコンテキストに挿入されます。 しかし、それを使用するかどうかは、実行されるクラスによって異なります。
Var SCRIPT_TO_EXECUTE=sayHello.tpr
Run "{SCRIPT_TO_EXECUTE}"
- 変数で指定されたスクリプトを実行します。
説明 |
次へ | 前へ | トップ^ |
_STRING
接頭辞付き変数の セットを入力 します。 変数名 | 説明 |
_STRING=<operationResult> |
「 文字列分割 」を除くすべての操作に対して実行された操作の結果 。
コマンドで "var" パラメータを使用してカスタム出力変数を定義する場合 、デフォルトの_STRING変数は作成されません。 |
_STRING_COUNT =<stringCount> | 「文字列分割」
操作 によって生成されたトークンの数 。 |
_STRING <n>=<token> |
<n>が
1〜_STRING_COUNTの間 で ある 「文字列分割」 操作 のn番目のトークン(部分文字列)。 コマンドで "var" パラメータ を使用してカスタム出力変数のベース名を定義すると、デフォルトの_STRING <n> 変数は作成されません。 |
v3.5.2以降、コマンドはまた ファジーテキストマッチング を実行することを可能にしました。 詳細については、 "matches"コマンド を参照ください。
String indexof "<text>" String=<text>[start=<index>] [end=<index>] [distance=<number>] [var=<variable_name>] *赤色は必須パラメータを示します
オプション
text
string
start
- 検索を開始するためのオプションの開始インデックス。 数値 または有効な数値式でなければなりません 。 インデックス付けはゼロから始まり、ゼロはテキストの先頭(最初の文字)を参照します。 デフォルトの開始インデックス値は0です。
end
- 検索を終了するオプションの終了インデックス。 数値 または有効な数値式でなければなりません 。 デフォルト値は、テキストの長さ(テキストの終わり)です。
distance
- 許容 文字列 検索を実行するための " string"パラメータ と組み合わせて使用する文字列の場所 (オプション、3.5.2以降でサポート)。 パラメータがデフォルト値の0(距離なし)に設定されている場合、コマンドは単純文字列検索に戻ります。ここで引数テキストは、指定された文字列の最初の出現文字数を検索します。
トレラント(ファジー)テキスト検索は、
1以上の距離値に対して実行されます。 テキストは、指定された文字列に似た文字列の出現が検索されます。 公差(類似度)は Levenshteinの距離 に基づいています。 これは、1つの文字列を他の文字列に変換するために必要な編集の最小数として定義され、許容可能な編集操作は1文字の挿入、削除、または置換です。 距離は、サンプルテキストと同等であると見なすために、省略可能または最大で正しく認識されない文字の数を概ね指定します。
検索の代わりに ファジーテキストマッチング を実行するには、 String matches コマンドを 使用します。
var
- 結果のインデックスを格納する変数のオプションの名前。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
String IndexOfコマンド
指定文字列がテキストの中で見つかった場合、戻り値0(ゼロ)を返し、そうでなければ1を返します。
さらにコマンドは、_STRING変数(または 'var' パラメータで 指定されたカスタム変数)にインデックス(見つからなければ-1)を格納します。
インデックス付けはゼロから始まり、ゼロはテキストの先頭(最初の文字)を参照します。
使用例
String
indexof "Demo
text" string=
"text"
var=
result
- "Demo text"の "text"の位置(インデックス)を取得し、 "result"変数に5の結果を格納します。
String
indexof "Demo
text" string=
"test"
var=
result
distance=
1
- 前の例と同じですが、 "text"の単語は、 "test"の指定された文字列によって配置されます。これは、1の距離内にあるためです。
オプション
var
- 結果のテキストの長さを格納する変数のオプションの名前。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
'String length'
コマンドは常に0(ゼロ)を返し、_STRING変数または 'VAR'で指定したカスタム変数に引数のテキストの長さ(文字数)を保存します。
使用例
String length "Demo
text"
var=
len
- "デモテキスト"(9)の長さを "len"変数に格納します。
オプション
pattern
- java.util.regex.Pattern
準拠の正規表現。 "." の正規表現
行終端文字を除くすべての文字にデフォルトで一致します。 この動作は、コマンドの設定で変更される可能性があります。
式は テキスト全体と 一致する必要があることに注意してください 。 このコマンドは、式に一致する部分をテキストで検索しません。たとえば「test」単語のテキストを検索する場合 ".*test.*"
を使用する必要があります。この場合「またはいずれかを含んでも含まなくてもよい『test』(.*)」を意味します。
string
- テキストを検索するための文字列です(3.5.2からサポートされています)。
- ファジーテキストマッチングを実行するために " string" パラメータ と一緒に使用されるオプション(3.5.2以降でサポート)。 パラメータがデフォルト値の0(距離なし)に設定されている場合、コマンドは引数文字列が指定された文字列と等しいかどうかをテストする単純文字列比較に戻ります。
トレラント(ファジー)テキストマッチングは
1以上の距離値に対して実行されます。 テキストは、指定された文字列と似ているかどうかがテストされます。 公差(類似度)は Levenshteinの距離 に基づいています。 これは、1つの文字列を他の文字列に変換するために必要な編集の最小数として定義され、許容可能な編集操作は1文字の挿入、削除、または置換です。 距離は、サンプルテキストと同等であると見なすために、省略可能または最大で正しく認識されない文字の数を概ね指定します。
指定された文字列は引数テキスト全体と一致する必要があることに注意してください。 ファジーテキスト検索 を実行し て、指定した文字列に似た文字列を検索するには、代わりに String indexof を使用します。
var
- 結果のブール値フラグ(true / false)を格納する変数のオプションの名前。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
'String match' コマンドでは、テキストが正規表現または通常表現で一致した場合0(ゼロ)を返しそうでない場合1を返します。
さらにコマンドは、結果を 'true'または 'false'として_STRING変数または 'var' パラメータで 指定されたカスタム変数に格納します。
使用例
File open file="C:\data.txt"
Var result=-1
for (i=1;
{i}<{_FILE_LINE_COUNT}+1; i={i}+1) {
File read line={i}
String
matches
"{_FILE_READ}" pattern="[a-z]*"
if
({_EXIT_CODE} == 0) {
Var result={i}
Break
}
}
// Create a sample
text
Var TEXT= "this is sample
text"
// This command will
戻り値 0 (pass) because the specified
// pattern will match any
text containing "simple" or "sample"
String "matches" "{TEXT}"
pattern=".*s[ia]mple.*"
// This will return 0 because
the text does not contain "simple"
String "matches" "{TEXT}" string="simple"
// This will return 0
because the text contains "sample"
// which has only one
character different from "simple"
String "matches" "{TEXT}"
string="simple"
distance=1
- さまざまな方法でサンプルテキストをテストします。
オプション
replacement
string
pattern
- java.util.regex.Pattern の文字列を表す準拠の正規表現を交換します。 "." の正規表現 行終端文字を除くすべての文字にデフォルトで一致します。 この動作は、コマンドの設定で変更される可能性があります。
var
- 結果の新しいテキストを格納する変数のオプションの名前。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
'Strig replace' コマンドは少なくとも一つの置換を行う場合戻り値0(ゼロ)を返し、交換が行われていない場合1を返します。
得られた新しいテキストは_STRING変数、または 'var' パラメータ によって指定されたカスタム変数に格納されます。
使用例
String replace "bad fat cat"
string=
"b"
replacement
=
"s"
String replace
"bad fat cat"
pattern=
"[bf]a[td]" replacement
=
"cat"
オプション
String
pattern
- java.util.regex.Pattern 準拠の正規表現で分割する。 "." の正規表現 行終端文字を除くすべての文字にデフォルトで一致します。 この動作は、コマンドの設定で変更される可能性があります。
var
- 結果の文字列を格納する変数のオプションのベース名。 このパラメータを指定しないと、結果はデフォルトの番号付き_STRING <数値>変数に格納されます。
戻り値
'String split' コマンドは常に0(ゼロ)を返します。 解析された各値は、_STRING1、_STRING2などの番号付き変数、または 'var' パラメータで 指定された名前から派生した同様の番号の変数セットに保存されます。
値の数は_STRING_COUNT変数に格納されます。
使用例
String split
"bad fat cat"
string=
" " var
=
"s"
String
split
"bad, fat cat"
pattern=
"[,]* "
//
Directory to work with.
Var
DIR=/tmp
//
List the directory contents (Linux/Unix).
//
For Windows replace the "ls" command with "command.com /C dir
/B"
Exec
"ls {DIR}"
// Split
the directory
listing
by lines
String
split
"{_EXEC_OUTPUT}" pattern="\r?\n"
for (i=1; {i}<{_STRING_COUNT}+1; i={i}+1) {
//
Replace
floating
point from
index (not
needed on
2.3.3+)
String
replace
"{i}" pattern="[.].*"
replacement=""
Var
f="{_STRING{i}}"
// If the
file is
a .png or
a .jpg image display it for 3 seconds
if ("{f}" endswith ".png" ||
"{f}" endswith ".jpg") {
Connect
"file://{DIR}/{f}"
Wait
3s
}
}
オプション
start
end
var
- 結果の部分文字列を格納する変数のオプションのベース名。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
'String substring' コマンドの開始と終了インデックスがテキスト内の有効な位置を指す場合に0(ゼロ)を返します。
開始位置が無効(つまり、0より小さいか、またはテキストの長さ以上)である場合、コマンドは開始インデックスを0に設定し、1を返します。
終了位置が無効な場合(つまり、開始位置またはテキスト長より大きい場合)、コマンドは終了インデックスをテキスト長のデフォルト値に設定し、2を返します。
戻り値に関係なく、_STRING変数(または 'var'
パラメータを 通したカスタム 値)は常に開始位置と終了位置の間に新しい部分文字列が設定されます。
使用例
String substring
"bad fat cat" start
="4" var="s"
String
length
"bad fat cat"
var="len"
String
substring
"bad fat cat"
start="{len}-3" end="{len}-2"
オプション
unicode
var
- 結果の文字列を格納する変数のオプションのベース名。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
'String toString' コマンドでは成功の場合0(ゼロ)、一つ以上のコードが有効なASCII / Unicode文字に対応していないとき1を返します。
成功した場合のコマンドは、_STRING変数(または 'var' パラメータを 通って渡されたカスタム変数 )に変換された文字列を 取り込みます 。
使用例
String tostring
"104;101;101;108;111" var="s"
String
tostring
"0xF1" var="s"
Var
tomorrow="ma{s}ana"
オプション
var
- 結果の文字列を格納する変数のオプションのベース名。 このパラメータを指定しないと、結果はデフォルトの_STRING変数に格納されます。
戻り値
'String trim' コマンドは常に0(ゼロ)を返します。
成功した場合のコマンドは、_STRING変数(または 'var' パラメータで 渡されたカスタム変数 )にトリムされた文字列を設定します。
使用例
String trim
" Hello! "
var="s"
説明 |
次へ | 前へ | トップ^ |
下線( '_')で始まる変数は、あらかじめ定義された変数と呼ばれます。 これらは、通常、HeartCore Robo Desktopまたはそのコマンドによって提供され、実行コンテキストおよび操作結果に関する情報を提供する有用な値を含みます。
以下が最も重要なものの一部表です。
誰が作成するのか | 変数名 | 説明 |
クライアント が デスクトップサーバー からクリップボードの変更 を受け取っ た とき の HeartCore Robo |
_SERVER_CLIPBOARD_CONTENT = <text> |
リモートデスクトップのクリップボードの内容。 通常は
、リモートデスクトップでコピーアクション(Ctrl + C)を実行し た結果など、サーバーのクリップボードが変更 された後に表示されます。 この メカニズムは、「サーバーからクライアントへの転送」と呼ばれます。 バージョン3.4以降では、双方向クリップボードの更新がサポートされています。 スクリプト は、 Var または Eval コマンドを 使用して変数を設定し 、サーバーの クリップボードの内容 を変更できます 。 このメカニズムは、「クライアントからサーバー への転送」 と呼ばれます 。 クリップボードとの間でテキストをやりとりする機能は、接続 タイプとサーバーのベンダーによって異なります。VNC接続 サーバは双方向転送をサポートしています。 UltraVNC、RealVNCのいずれかです。 TightVNCは、クライアントからサーバー への転送を サポートしていない ため、サーバーをクライアントから有効にするには追加のユーティリティが必要 です。 他のサーバーはテストされていないため、動作確認は取れていません。 ローカルデスクトップ接続は、双方向転送をサポートしています。 ローカルのクリップボードがポーリングメカニズムを使用して200msごとにチェックされ ている場合、Ctrl + C を 押してからスクリプトが少なくとも200ms待つ ようにして、変数が正しく設定されるようにする必要があります。 クリップボードの内容は、 再呼び出し後に変更される可能性があり、 Type 、 Typeline または Press などで、部分的にキーボードの出力を実行する場合、ローカルクリップボードに依存しています。 他の接続タイプはクリップボード転送をサポートしていません。 より多くのクリップボード 関連の機能については、 Waitfor clipboard コマンドを参照ください。 |
クライアント が デスクトップサーバー からクリップボードの変更 を受け取ったとき |
_SERVER_CLIPBOARD_CONTENT_TEXT =<text> | この変数は、 上記 の_SERVER_CLIPBOARD_CONTENTと同じ規則に従い 、2つの例外を除いて保存します。 クリップボードにHTMLドキュメントまたはHTMLコードのチャンクが含まれている場合、変数は HTMLから抽出された プレーン テキストコンテンツで作成されます。 それ以外の場合、2つの変数の内容 は等しくなります。 この変数を設定しても、サーバーのクリップボードは更新されません。 4.1.1以降でサポートされています。 |
スクリプト実行 が開始 されたとき、またはスクリプトがコンパイルされたとき |
_DATE = <yyyyMMdd> | 実行開始日 ("yyyyMMdd"形式)の場合、 たとえば、2005年5月8日は「20050508」と定義されます。 形式は 、ユーザー設定の [ 言語 ]パネルで カスタマイズできます。 現在の日付 を取得するに は、 以下 の_CURDATE変数を参照してください 。 |
_TIME =<HHmmss> | "HHmmss"フォーマットでの実行開始時刻は24時間です。 たとえば、3:10:33 pmは「151033」と定義されます。 形式は 、ユーザー設定の [ 言語 ]パネルでカスタマイズできます。 ミリ秒単位で現在の時刻 を取得するに は、 以下 の _CURTIME 変数を 参照ください 。 現時点のフォーマットされたバージョンが必要な場合 は、カスタムフォーマットの _CURDATE を 使用してください。 |
|
_FILE = <file> | 実行されたスクリプトの絶対パスです(例: "/root/test.txt")。 |
|
_FILENAME = <file_name> |
スクリプトファイル名(例: "test.txt")。 |
|
_REPORT_DIR = <pass> |
スクリーンショットとレポートのターゲットディレクトリ。 すべてのスクリーンショットとレポート は、絶対パスで指定されていない限り、このディレクトリに保存されます。 この変数をスクリプトで明示的に設定すると 、次のように定義され たデフォルトのパスが上書き されます。
|
|
_REPORT_FILE = <file> | レポートへの絶対パス(スクリプトによってレポートが作成されている場合)。 v4.0以降で サポートされ ています。 |
|
_REPORT_FILE_RELATIVE = <file> | _REPORT_DIRで指定されたレポートフォルダの相対的なレポートファイルのパス。 v4.1.3以降でサポートされています。 |
|
_TEMPLATE_DIR = <pass> |
画像比較のためのテンプレート画像を含むソースディレクトリ。 イメージ比較を使用するコマンド は、相対パスで指定された すべての テンプレートを このディレクトリで検索し ます。 この変数をスクリプトで明示的に設定すると 、次のように定義され たデフォルトのパスが上書き されます。
|
|
_SCRIPT_DIR = <pass> |
現在実行されているスクリプトがあるディレクトリ(絶対パス)。 |
|
_WARNING_COUNT = <count> |
スクリプトの実行中に Warning コマンド によって生成された警告の数 。 |
|
_CURDATE_FORMAT = <format> |
_CURDATE 動的変数の 日付/時刻形式 。java.text.SimpleDateFormat
仕様に 準拠し た文字列でなければなりません 。 たとえば 、変数を「yyyy」 に 設定すると、後で 「 _CURDATE 」 を使用し て「2010」(現在の4桁の形式)が生成されます。 この 変数を空の文字列に 設定 すると、フォーマットがデフォルト値に戻ります。 |
|
_RANDOM_MIN = <integer_number> _RANDOM_MAX = <integer_number> |
動的変数 _RANDOMに 使用される ランダム値ジェネレータの最小値と最大値 。 デフォルト値は1と 100000です。 |
|
_RGB_X = <x_coordinate> _RGB_Y = <y_coordinate> |
デスクトップイメージからRGBを取得するために使用される座標。 ユーザー は、これらの2つの変数を希望の座標に設定 して _RGB 動的変数 を使用してピクセルカラーを取得することを推奨します。 |
|
_INSTALL_DIR = <installパス > |
インストールディレクトリ。 これは、robot.jarファイルの場所と同じです。 ディレクトリ は絶対パスであり、ファイル区切りで終わらない。 v2.3以降でサポートされています。 |
|
_ENV_ <variable_name> = <number> |
環境変数。 これらは、 ホスティング・オペレーティング・システム によって提供されるOS固有の変数 です。 これらの変数は 、環境設定 ウィンドウのスクリプト - >言語パネルでその ような オプションが選択されて いると入力されないことがあり ます。 v2.3以降でサポートされています。 |
|
_EXECUTION_SPEED_FACTOR = <float_number> |
'wait'スクリプトタイムと 'timeout'スクリプトタイムを掛け合わせる要因。 これにより 、スクリプトの実行をスピードアップまたはスローダウン できます 。 変数は 、 Preferences-> Execution パネルで 指定された値に 初期化 されます 。 デフォルト値 は1で、 '100%'を意味します。 たとえば、スクリプトを遅くして すべての待機時間を50%長くするには、値を '1.5'に設定します。 3.2からサポートされています。 |
|
_FS = <ローカル_OS_ファイル_セパレータ> _FPS = <ローカル_OS_ファイル_パス_セパレータ> |
ローカルOSのファイルセパレータ(Windowsではバックスラッシュ、Linux / Unixではスラッシュ '/') 、ファイルパスセパレータ(Windowsではセミコロン '; Linux / Unixではコロン': ') 区切り文字 を使用すると、任意のシステムからテストスクリプトを実行できるように 、OSに依存しない相対パスとパス リスト を構築 できます。 たとえば 、 ".. \ data" の相対的なWindowsパスが".. {_ FS} data" と指定されている場合、スクリプト はすべてのUnix / Linuxシステムでも正しく動作します。 |
|
_STEP_SUMMARY_FORMAT = <形式> |
_STEP_SUMMARY 動的 変数 によって生成されたステップサマリーの書式 。 形式には 、1つのステップ結果をサマリーに追加 する方法 を 定義する任意の文字列を使用できます 。 ルール: - 「{<PARAM>}」ここで、<PARAM>有効小文字のすべての発生 段階の コマンド パラメータ名( name 、 expected 、
actual 、 instruct 、 notes )、
又は result キーワードは、対応するステップ属性に置き換えられます。 - <param>文字列が大文字の場合(たとえば {RESULT} ) 大文字の属性値 で 置き換えられます。 - "\ n"の文字列が改行文字に置き換えられます。 デフォルトのフォーマットは次のとおりです。 次のような要約を生成します。 3.5.1以降でサポートされています。 |
|
変数が使用さ れるたびにHeartCore Robo 。 これらの変数の 値 は 、変数呼び出し時に 作成さ れるため、「動的 変数」 と呼ばれます。 |
_CURTIME = <time_in_milliseconds> |
この変数が使用されるたびに
、UTC 1970年1月1日の 深夜からの現在のシステム時間(ミリ秒単位 )に動的に置き換えられ ます。 この変数を使用して 、コマンドまたはコマンド・ブロックの実行に要した時間 を計算 したり 、リモート・システムのパフォーマンスを測定 することができます 。 |
_CURDATE = <フォーマットされた日時 > |
現在の時刻および/または日付を読み取ります。 形式は 、スクリプトで _CURDATE_FORMAT 変数 を使用して指定できます。 変数が設定されていない場合、フォーマットはデフォルトでユーザ設定の値になります。 (ユーザー設定の「言語」パネルを参照してください)。どちらのプリファレンスも設定されていない場合、フォーマットはデフォルトの java.util.Date().toString() によって生成されたものになります。 |
|
_MOUSE_X = <X_座標> _MOUSE_Y = <Y_座標> |
現在のマウスポインタのX、Y座標を返します。 ツールが デスクトップに 接続さ れて いない か、接続後にまだマウスイベントが登録されていない場合 、座標は[0、0]を返します。 |
|
_RANDOM = <random_integer> |
変数を使用するたびに、ランダムな整数値が生成されます。 範囲はデフォルトで[ 1、100000 ]に設定されて おり 、_RANDOM_MIN 変数と_RANDOM_MAX変数 で変更できます(上記参照)。 |
|
_RGB = <RGB_color> | 変数が使用されるときはいつでも 、 _RGB_Xおよび _RGB_Y 変数で 指定された座標によってポイントされる デスクトップ イメージピクセルの 現在の色を取得し ます。 これは、 画面上の 場所に 特定の色が含ま れているかどうかをテストするために使用できます 。 _RGB_Xおよび_RGB_Y変数をターゲット座標 に設定し てから、_RGB変数を呼び出し て色を取得することをお勧めします。 ピクセル値は、HTML形式の書式文字列、 6文字の長さで 返され 、R、G、Bコンポーネントがこの順序で指定されます。 小文字の16進数の値(コンポーネントあたり2文字)。 例えば、RGB( 255,255,255)の白色は 「ffffff」として表され 、RGB(0,255,0)の緑色は「00ff00」を生成する。 [234,128]のピクセルが緑であるかどうかをテストする典型的な例: このメカニズムは、単純な正確なカラーマッチングにのみ適しています。 以下のために 特定の色またはオブジェクトの画面領域のより一般的な試験 色合い参照オブジェクト検索によって使用されるアルゴリズムのcompareTo、 スクリーン 'とを Var _RGB_X=234 _RGB_Y=128 if ("{_RGB}" == "00ff00") { Waifor match 'コマンドを使用します。 |
|
_STEP_SUMMARY = <step summary> |
プレーンテキスト これまでにスクリプト 内 に 記録され た ステップ結果の要約(ステップごとに1行) 。 例えば: 上のコードを実行した後、SUMMARY変数には以下が含まれます: 要約フォーマットは、テストスクリプトのスコープ で _STEP_SUMMARY_FORMAT 変数を使用して カスタマイズすることも 、ステップ コマンドのプリファレンスを 介してグローバルに カスタマイズすることもでき ます。 両方の方法を使用すると、変数の 優先順位 が高くなり ます。 3.5.1以降でサポートされています。 |
|
スクリプトの実行 が開始された とき 。 また、 Connect コマンド と Disconnect コマンド によって更新され ます。 |
_MACHINE = <サーバー名> | HeartCore Roboが接続されているデスクトップサーバーのマシン名。 接続がない場合、変数は空です。 |
_PORT = < ポート番号 > | デスクトップサーバーのポート番号。 接続されたデスクトップが ( ローカルディスプレイに 直接接続されたドライバなどの)TCP / IP接続を使用 しない 場合 、変数は空です。 |
|
_PROTOCOL = <プロトコル名> |
現在のデスクトップ接続プロトコルの名前(コード)(大文字は 「RFB」、「ADB」、「JAVA」など)。 |
|
_URL = <desktop_url> |
プロトコル、マシン(ホスト)名、オプションで ポート番号 を含むデスクトップURL 。 |
|
_DESKTOP_WIDTH = <width_in_pixels> | 現在接続されているリモートデスクトップの幅(ピクセル単位)。 |
|
_DESKTOP_HEIGHT = <width_in_pixels> | 現在接続されているリモートデスクトップの高さ(ピクセル単位)。 | |
_DISPLAY_COUNT = <number_of_displays> |
接続によって管理されるディスプレイ(画面)の数。 4.3.1 以降でサポートされてい ます。 今回のリリースでは、マルチディスプレイ対応の接続は ローカルデスクトップ のみ です。 他のすべての接続では、カウントは1(1)と表示されます。 |
|
_DISPLAY_X_ <n> = <number_in_pixels> _DISPLAY_Y_ <n> = <number_in_pixels> _DISPLAY_W_ <n> = <number_in_pixels> _DISPLAY_H_ <n> = <number_in_pixels> |
n番目のディスプレイの座標(x、y、幅、高さ)。 ナンバリングは1から始まり 、ローカルOSに従います。 複数のディスプレイをサポートしていない接続では 、X座標とY座標はゼロに設定され、幅と高さは デスクトップ 座標に設定され ます。 4.3.1以降でサポートされています。 |
|
接続または 切断 時の RFB(VNC)クライアント |
_DISPLAY = <サーバー名>:[<ディスプレイ番号>] | Unix / Linuxシステム でディスプレイリダイレクト に 役立つ変数を表示し ます。 これは "server:port"形式です。 たとえば、 "mymachine:2"は ポート5902でVNCサーバーを実行している 「mymachine」と呼ばれるマシンを定義 します.VNC 接続がない場合、変数は空です。 |
指定された条件を満たす 更新イベント が発生する と 、Waitforコマンドが実行されます。 |
_X = <number_in_pixels> |
条件を満たす最後の更新イベントの「x」座標。 |
_Y = <number_in_pixels> | 条件を満たす最後の更新イベントの「y」座標。 | |
_W = <number_in_pixels> | 条件を満たす最後の更新イベントの「幅」座標。 | |
_H = <number_in_pixels> | 条件を満たす最後の更新イベントの「高さ」座標。 | |
毎回実行 後にWaitforコマンド |
_TIMEOUT = <true | false> | timeoutが定義され、到達すると、Waitforコマンドは この変数を 'true'に設定し、そうでなければ 'false'に設定します。 |
レポート が 生成さ れるたびにレポートコマンド |
_REPORT_FILE = <ファイル> | レポートファイル(絶対パス)(例: '/root/report.html')。 |
_REPORT_FILENAME = <ファイル名> | レポートファイル名(例: 'report.html')。 | |
_REPORT_FILE_RELATIVE = <ファイル> | レポート(出力)ディレクトリ(たとえば、 'MyTestScript.tpr.2a12fd2 / report.xml' )に対して相対的にファイルパスを報告します 。 4.1.3以降でサポートされています。 |
|
Compareto、Screenshot
、Waifor match、クリック
アンドドラッグ
など、画面 上 の コンポーネントまたはテキストの 検索 を 実行するコマンド |
_COMPARETO_TEMPLATE = <ファイル> |
最後の画像比較に使用される画像ファイル(絶対パス)。 |
_COMPARETO_RESULT = <number> |
比較結果のパーセンテージ。 これは常に0〜100の数値 です。画像がどのくらい一致したかを示します。 |
|
_COMPARETO_PASS_RATE = <number> |
最後の画像コンパイルに使用された合格率パーセンテージ。 それは 、常に0〜100の数値。 |
|
_COMPARETO_TIME_IN_MS = <ミリ秒> |
イメージ比較で費やされた時間(ミリ秒)。 テンプレートの リストがある場合 、その値は実行されたすべての 比較の 要約時間を表し ます。 |
|
_COMPARETO_TEMPLATE_INDEX = <number> |
pass 結果 を生成したテンプレートリスト内のテンプレートのインデックス 。 インデックスはゼロから始まります。 |
|
_COMPARETO_TEMPLATE_WIDTH = <number> _COMPARETO_TEMPLATE_HEIGHT = <number> |
一致するテンプレート画像の寸法。 v4.4以降、変数には 、比較が失敗したときに使用された最後のテンプレートイメージが格納されます。 |
|
_COMPARETO_SOURCE_X = <数値> _COMPARETO_SOURCE_Y = <number> |
最後に比較されたテンプレートのソース座標。 これらの変数 は、バージョン2.2以降で作成されたテンプレートに対してのみ設定されます。 詳細については、 画像メタデータの 章を参照してください。 |
|
_COMPARETO_CLICK_X = <number> _COMPARETO_CLICK_Y = <number> |
最後に比較されたテンプレート画像のクリック点。 座標は、デフォルト では、「検索」画像 比較アルゴリズムまたはカスタム相対 位置を介して配置されたコンポーネントの中心を指す 。 詳細については、 画像メタデータの 章を参照してください。 |
|
_COMPARETO_CLICK_X_ <n> = <number> _COMPARETO_CLICK_Y_ <n> = <number> |
<n>番目のマッチの最後に比較されたテンプレート画像のクリック点。 座標は、デフォルトでは 、「検索」画像比較アルゴリズムを介して 配置さ れ たコンポーネントの中心、 または テンプレート画像が作成されたときにクリックポイントによって定義された カスタム相対 位置を指します。 詳細については、 画像メタデータの 章を参照してください。 |
|
_COMPARETO_DISPLAY_NO = <display_number> _COMPARETO_DISPLAY_NO _ <n> = <display_number> |
最上位またはn番目の一致があったディスプレイの番号。 ナンバリングは1から始まり、ローカルOSに従います。 4.3.1以降でサポートされています。 今回のリリースでは、マルチディスプレイ対応の接続は ローカル デスクトップ のみ です。 他の接続はすべて常に1(1)と表示されます。 |
|
ユーザー(カスタマイズ可能) |
_COMPARETO_SORT_MODE = <number> |
ディレクトリから読み込まれたテンプレートイメージに適用されるソートモード。 詳細については、 画像コレクションの 章を参照してください。 |
_DESKTOP_SIZE = w:<幅>; h:<高さ> |
iOSミラー接続を介してミラー化されたiOS画面のターゲットサイズ。 この変数を設定するVarコマンドが実行されるたびに、 ミラー化された画面の サイズが変更 され、特定の画面サイズに対して作成された テンプレート画像の画像比較が 正しく機能するようになります。 詳細については 、 iOS Mirror 接続ドキュメントを お読み ください。 |
|
「検索」比較
方法が使用されて いる
場合のComparetoコマンド、 スクリーンショット 比較、 「 Waifor match 」コール |
_SEARCH_MATCH_COUNT = <number> |
イメージ検索で 見つかった一致の数 。 常に ゼロ以上 の整数 です。 |
_SEARCH_X = <number> | 最初の一致の「x」座標。 テンプレート画像が 見つからなかった 場合、 値は-1です。 |
|
_SEARCH_Y = <number> | 最初のマッチの 'y'座標。 テンプレート画像が 見つからなかった 場合、 値は-1です。 |
|
_SEARCH_X_ <n> = <number> _SEARCH_Y_ <n> = <number> |
n番目の一致の 'x'と 'y'座標。ここで、nは 1と_SEARCH_MATCH_COUNTの値の間です。 |
|
"オブジェクト"比較
方法が使用されて いる
ときのComparetoコマンド、 スクリーンショット 比較、および ' Waifor match '呼び出し |
_OBJECT_COUNT = <数値> | 「オブジェクト」 画像比較方法を 介して配置されたオブジェクトの数 。 |
_OBJECT _X_ <n> = <number> _OBJECT _Y_ <n> = <number> _OBJECT _W_ <n> = <number> _OBJECT _H_ <n> = <number> |
'x'と 'y'の座標、n番目のオブジェクトの幅と高さ( nは1〜_OBJECT_COUNTの間)。 |
|
Execの 後のコマンド 実行ごと |
_EXEC_OUTPUT = <テキスト> |
実行されたコマンドの標準出力、つまり コンソールに 出力されるメッセージ 。 |
_EXEC_ERROR = <テキスト> | 実行されたコマンドのエラー出力、つまりエラーメッセージ がコンソールに 出力 され ます 。 |
|
_EXEC_COMMAND = <コマンド> | 最後に実行されたOSコマンド、つまりExec引数。 | |
_EXEC_VALUE = <数値> |
実行されたOSコマンドの整数終了コード。 |
|
Compareto、Screenshot、Waiforの一致/不一致、クリック
アンドドラッグ などの 画像比較コマンド |
_LAST_CMP_COMMAND = <コマンド> |
最後に実行されたイメージ比較コマンドのテキスト。 v4.4.2以降でサポートされています。 |
実行中のスクリプト | _TPR_LAST_COMMAND_1 = <コマンド> _TPR_LAST_COMMAND_2 = <コマンド> _TPR_LAST_COMMAND_3 = <コマンド> |
すべての変数呼び出しが解決および置換された、最後に実行された3つのコマンドのテキスト。 6.1以降でサポートされています。 |
変数ブラウザ ウィンドウを 使用 して、現在の実行リポジトリに存在する変数のリストを表示する ことができ ます。
構文
var
<var_name_1>=<value_1>
[<var_name_2> = <value_2> ... <var_name_N> = <value_N>]
*赤色は必須パラメータを示します
オプション
var_name
- 変数の名前。 名前は大文字と小文字が区別され、スペースは使用しないでください。
value
- 変数値。 値にスペースが含まれている場合は、二重引用符で囲む必要があります(例:「これはスペースを含むテキストです)。 変数の値に二重引用符を含める必要がある場合は、 "This is a double quote \" "のように先行するバックスラッシュを置きます。二重引用符の後ろにバックスラッシュを含める必要がある場合は、 '、例えば "これはバックスラッシュの後に二重引用符を付けたものです - \\" "
戻り値
Varのコマンドは、常に0(ゼロ)を返します。
使用例
Var
PATH=/tmp path=/tmp DESCRIPTION="Path to change to" EMPTY=
- 4つの変数PATH、path、説明、およびEMPTYを指定の値で作成します。
Compareto "search.png" method="search"
for (i=1;
{i}<{_SEARCH_MATCH_COUNT}+1; i={i}+1) {
#
Nested variables compose the variable names of a suffix and
an index
Mouse
click
to=x:{_SEARCH_X_{i}},y:{_SEARCH_Y_{i}}
}
search.png
によって表されるアイコンをリモートデスクトップイメージから検索し、すべてをクリックします。
説明 |
次へ | 前へ | トップ^ |
構文
varf
<var_name_1> = <value_1>
[<var_name_2> = <value_2> ... <var_name_N> = <value_N>]
*赤色は必須パラメータを示します
オプション
var_name
- 変数の名前。 名前は大文字と小文字が区別され、スペースは使用できません。
value
- 変数値。 値にスペースが含まれている場合は、二重引用符で囲む必要があります(例:「これはスペースを含むテキストです)。 エスケープシーケンスは次のように変換されます:
\b
/ * \u0008
:バックスペースBS * /
\t
/ * \u0009
:水平タブHT * /
\n
/ * \u000a
:ラインフィードLF * /
\f
/ * \u000c
:フォームフィードFF * /
\r
/ * \u000d
:キャリッジリターンCR * /
\"
/ * \u0022
:二重引用符 "* /
\'
/ * \u0027
:一重引用符 '* /
\\
/ * \u005c
:バックスラッシュ\ * /
\uNNNN will be converted
to the appropriate Unicode character as long as NNNN is a valid
Unicode character hexadecimal value
戻り値
Varfコマンドは常に0(ゼロ)を返します。
使用例
Varf MULTILINE="Line
#1\nLine #2"
- MULTILINE変数に2行のテキストを挿入します( '\ n'シーケンスは新しい行に変換されます)。
Varf MULTILINE="Line
#1\u000aLine #2"
- 改行文字がエスケープされたUnicode(新しい行はASCII 10、0x0a)で指定されている上記の例と同じです。
説明 |
次へ | 前へ | トップ^ |
Varg - 変数とその変数の有効範囲(スコープ)を定義(Varg "set")または削除(Varg "delete")します。v6.3以降でサポートされました。Varコマンドの拡張コマンドです。
CLIオプションに--variable-sessionというのがあります。これを利用して作成したロボットの起動時にセッション変数を作成することができます。
構文
Varg "set" name=<variableName> [value=<variableValue>] [scope=<visibilityScope>]
*赤色は必須パラメータを示します
オプション
name=<variableName>
- 変数の名前。名前は大文字と小文字が区別され、空白や等号('=')を含んではならない。
value=<variableValue>
- 変数の値。
scope=<visibilityScope>
- 変数の有効範囲。以下の設定ができます。
戻り値
Vargコマンドは常に0(ゼロ)を返します。
使用例
Varg set name="S" value="Hello" scope="session"
- 'S'というセッション変数を作成または設定します。
Varg delete name="S" scope="session"
- 前の例で作成したセッション変数を削除します。ローカルやスクリプトに存在する同名の変数はすべて残します。
説明 |
次へ | 前へ |次へ トップ^ |
書式
wait <time>
*赤色は必須パラメータを示します
オプション
time
- 次のコマンドに進む前に待機する時間。 ゼロより大きい数値でなければなりません。 デフォルトでミリ秒として解釈されます。 時間形式の指定については、 時間値の構文 を参照ください 。
戻り値
コマンドは常に0(ゼロ)を返します。
使用例
Wait
30000
Wait 30s
Wait 0.5m
- 3つのコマンドはすべて同等で、次のコマンドに進む前にスクリプトを30秒待機させます(30,000ミリ秒、0.5分)。
説明 |
次へ | 前へ | トップ^ |
Waitforイベント |
RFBクライアント("rfb") | 静的イメージ( "file") |
"update"(画面更新) |
はい |
はい (イメージファイルの変更の検出による) |
"bell"(ビープ音) |
はい |
いいえ |
"clipboard"(クリップボードの変更) |
はい ( vncconfig または autocutsel
ユーティリティをサーバー上での実行が必要な場合があります。 詳しくは リリースノートを参照ください。) |
いいえ |
"match"(ポジティブ画像比較結果) |
はい |
はい |
"mismatch"(ネガ画像比較結果) | はい |
はい |
すべてのWaitforコマンドは、次の変数に値を設定します。
変数名 | 説明 |
_TIMEOUT = <true|false> | timeoutが定義され、到達するとWaitforコマンドは この変数を 'true'に設定し、そうでなければ 'false'に設定します。 |
変数名 | 説明 |
_X=<X座標> _Y=<Y座標> _W=<幅> _H=<幅> |
条件を満たす 最後の更新 イベント のX、Y座標と幅と高さ。 これらの変数は Waitfor更新の ためだけに利用されます。 |
_SERVER_CLIPBOARD_CONTENT
変数が記述されていますが、Waitforコマンドでは作成されず、コマンドとは独立してコアフレームワークによって設定されています。 Waitfor <event_id> [<event specific options>] [timeout=<time>][ontimeout = <command>] [onpass=<command>] [count=<number>] [wait=<time>]
*赤色は必須パラメータを示します
event_id
-サポートされているイベントIDは、'bell'
、 と 'update'
'match'
'mismatch'
'clipboard'
です。
_SERVER_CLIPBOARD_CONTENT
変数 を介してリモートクリップボードの内容が利用可能になり ます( Var コマンド も参照 )。 timeout=<time>
- タイムアウトの最大待機時間を指定する。 値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。
ontimeout=<command>
- タイムアウトに達したときに実行されるコマンド。 1つのコマンドでなければなりません。 実行するコマンドのシーケンスを定義する必要がある場合は、プロシージャを使用します。
onpass=<command>
- 条件が満たされたとき(期待されるイベントが受信されたとき、またはイメージ比較が期待される結果を返さないとき)に実行されるコマンド。 それは単一のコマンドでなければなりません。 一連のコマンドを呼び出すには、プロシージャーまたは後続の if / else構造 を使用して、コマンドの終了コードをテストします。
count= <number>
- イベントを待機する回数。 デフォルト値は1です。このパラメーターは、イメージ比較イベント(Waitfor match / mismatch)では無視されます。
wait=<time>
- Waitfor条件が満たされた後に待機する時間。
次のコマンドが " Wait <time_in_ms>
' だった場合と同じ効果があります 。
このパラメーターは、 timeout
パラメーターで 定義されたタイムアウトに 達した場合は無視されます。
値は、ミリ秒数または有効な 時間値 のいずれかでなければなりません 。
デフォルト値は0です(待ちません)。 スクリプトは_WAITFOR_WAIT変数に所望の遅延を設定するなどして、デフォルト値を設定することができます
例:"Var _WAITFOR_WAIT=1s"
。
Waitfor bell [< common options >]
特定のオプション - bell
なし。
Waitfor update [area=[x:<x>][,y:<y>][,w:<width>][,h:<height>]] [extent=<number>[%]] [cumulative=<false|true>] [<common option >]
特定のオプション - update
area=[x:<x>][,y:<y>][,w:<width>][,h:<height>]
-
更新のための画面領域。 このパラメータは update
イベントに のみ適用され、 カスタム領域を定義して更新を監視することができます。 エリア座標は ' x:<x>,y:<y>,w:<width>,h:<height>
'の 形式を持ち 、各座標はピクセル(例: ' x:225
')またはパーセンテージ(たとえば ' x:23%'
) で指定できます 。
x、y、幅または高さのいずれかが省略された場合、Robotは全画面値を使用して欠落しているパラメータ、つまり
' x:0, y:0, w:<screen_width>, h:<screen_height>
' を決定します。
ステータスバーの Update Coordinates 機能 を使用して、更新エリアを定義することもできます 。
extent= <number> [%]
-
スクリーン更新の範囲(有効範囲)。
このパラメータは、 update
イベントにのみ適用され 、画面更新の大きさを定義します。
値は更新されたピクセル数(例: ' extent=400
')またはパーセンテージ(たとえば ' extent=22%
')のいずれかです。
カスタムエリアが area
パラメータで 定義されている 場合、パーセンテージ/ピクセル値がこのエリアに対して計算されます。
cumulative=<false|true>
-
累積的な更新をオン/オフに切り替えます。 デスクトップサーバーが徐々に画面を更新し、大きな画像の断片を多く送信する場合は、この機能をオンにすると、HeartCore Robo Desktopは
定義された領域に入るすべての部分的な更新をsumarizeします。 デフォルト値はfalseです。
Windows VNCサーバーは一連の小さな更新で画面を更新することが知られているので、モードをtrueに設定することをお勧めします。
Waitfor match|mismatch [template=<image_collection>]
[passrate=<pass_rate>%] [interval=<comparison_interval>]
[method=<comparison_method>] [methodparams=<custom_params>] [cmparea=[x:<x>][,y:<y>][,w:<width>][,h:<height>]] [<common options>] [<method_specific_params >]
*イメージコレクションは、選択したイメージ比較アルゴリズムで必要な場合のみ必須ですパラメータ "方法")。
詳細については、 Comparetoコマンドの仕様を参照してください。
特定のオプション - matchとmismatch
template=<image_collection>
-
image collection
-セミコロンで区切られた画像を1つまたは複数の画像ファイル名やフォルダ(「;」)リモートデスクトップの画像と比較します。
Linux / Unixでは、リストが誤って解析されるため、ファイル名にセミコロンが含まれていないことを確認してください。
ファイル名は、相対(例えば img.png
)か絶対(例えば /root/report/img.png
)の どちらか です。
相対パスを使用すると、イメージは _TEMPLATE_DIR変数 で定義されたディレクトリで検索されます。
サポートされるイメージ形式は、Javaバージョンおよびインストールされた拡張機能(Java Advanced Imagingライブラリ、JAIなど)の対象です。
Java 1.6以降でPNG、JPG、GIF、およびBMPをサポートします。
テンプレートイメージは、指定されたリストの順序でリモートデスクトップイメージと比較されます。
テンプレートの比較で肯定的な結果(指定されたイベントに応じて一致または不一致のいずれか)が発生した場合、条件は満たされたとみなされ、終了コード0でコマンドが終了します。
( _COMPARETO_TEMPLATE_INDEX
変数に格納)
あらかじめ 定義された変数 を使用して、リスト内(詳細は、 画像比較固有の変数 ) を 参照してください 。
画像の比較は、JPEGなどの非可逆圧縮の画像に対しては実行しないでください。 代わりにPNGまたはBMPを使用してください。 それらであれば画像情報の100%を保存してあるため、信頼性の高い安定した比較結果が保証されます。 イメージ比較については Comparetoコマンドの仕様 で説明します。
interval=<time>
passrate=<pass_rate>%
"passrate=95"
または "passrate=95%"
)を 続けてもかまいません 。
このパラメータを省略すると、メソッドまたはHeartCore Robo環境設定で定義されたデフォルトの合格率が使用されます
(デフォルト値は 「デフォルト」では 95% 、 "search"
および 「 "search2"の方法 では100%です )。
method=<comparison_method>
methodparams=<custom_params>
cmparea=[x:<x>][,y:<y>][,w:<width>][,h:<height>]
x:<x>,y:<y>,w:<width>,h:<height>
' の形式を持ち、 各座標はピクセル単位(たとえば。 "x:225"
)またはパーセント 単位("x:23%"
)で指定できます。
x、y、幅または高さのいずれかが省略された場合、Robotはフルスクリーン値を使用して不足しているパラメータ( x:0, y:0,w:<screen_width>, h:<screen_height>
) を決定します 。 Waitfor clipboard [<common options >]
特定のオプション - clipboard
なし。
戻り値
条件(イベント)が満たされた場合、コマンドは、一般的に0(ゼロ)を返します。 タイムアウトに達すると、ゼロ以外の値(通常は1)が返されます。
' Waitfor match
'と ' Waitfor mismatch
'は Compareto
コマンドの 動作を模倣 し、比較が成功する と0(ゼロ)を返し、失敗した場合は1を返し、テンプレート画像が見つからないか読み取れない場合は2を返します。
使用例
Typeline
"export MYDOC=`find /
-name mydoc.txt`; sleep 1; echo -e '\007\007'"
Waitfor bell count=2
Typeline
"gnome-text-editor
$MYDOC"
- これは Unix / Linuxシステムでbell
イベント を使用する典型的な例 です。 あなたのハードドライブ上のファイルを見つけてそれを編集する必要があるとしましょう。 最初のコマンドは、ターミナルウィンドウで検索を実行し、Waitforコマンドに進みます。 検索が終了すると、 echo
OSコマンド を使用して2つのベル文字が印刷され 、マシンのビープ音が2回鳴ります。 これにより、Waitforコマンドが実行され、3番目のコマンドが実行され、Gnomeテキストエディタでドキュメントが開きます。
' sleep 1
'コマンドを使用します。 デスクトップサーバーが非常に高速で、HeartCore Robo Desktopを実行しているマシンが多少遅い場合、Waitforコマンドに進む前にドキュメントの検索が完了することがあります。 ' sleep 1
'は、サーバーが2つのベル文字を印刷する前に1秒間待機するため、この問題を防ぎます。
procedure terminate
{
Screenshot
error.jpg
Report
report.html
Exit
{1}
}
Typeline
myapplication
Waitfor update extent=40%
timeout=20s ontimeout="terminate 2"
これは Waitfor update
コマンドの 典型的な使い方です 。
これは、 myapplication
ターミナルウィンドウから 呼び出さ れた GUIアプリケーションを起動している状況を示してい ます。
アプリケーションウィンドウが画面サイズの少なくとも40%に等しい固定サイズを持っているとしましょう。 GUIが正常に起動すると、スクリプトは続行されます。
Waitforコマンドは、さもなければ20秒待ってから、与えられた終了コードで終了プロシージャを実行します。
Waitfor match template=application.png;application2.png
passrate=95% interval=5s timeout=5m
ontimeout="exit 1"
- リモートデスクトップイメージをイメージ application.png
と 比較し、 application2.png
95%以上が一致するまで5秒ごとに 比較し ます。 この条件が5分以内に満たされない場合は、 Exit
コマンドを 使用してスクリプトの実行を終了し、終了 コード1を返します。
Press
Ctrl+C
Waitfor clipboard timeout=5s
if ({_EXIT_CODE} == 0) {
Screenshot
copied_text.jpg
desc="Received text copied on the remote
desktop: {_SERVER_CLIPBOARD_CONTENT}"
}
- リモートデスクトップでCtrl + Cを押すと、通常、選択したテキストがリモートシステムのクリップボードにコピーされます。 一部のデスクトップサーバーは、このテキストをクライアントに送信することができます。
HeartCore Robo Desktopはそのようなメッセージをデコードし、_ SERVER_CLIPBOARD_CONTENT
変数の 形でテキストをスクリプトに提供することができます。
上記の例では、コピーしたテキストの受信 Waitfor clipboard
と、スクリーンショットの説明などの使用を確認する方法を示しています 。
説明 |
次へ | 前へ | トップ^ |
オプション
text
- ログテキスト。 実行ログファイルはHTML形式で生成されるため、HTMLマークアップを含むことがあります。
level=<logLevel>
- 値trueを指定すると、コマンドは端末にメッセージをコピーします(コマンドプロンプト)。 デフォルト値は 'false'です。 v4.1.3以降でサポートされています。
history=<true|false>
- trueを指定すると、コマンドは最新のスクリプト履歴をログファイルに記録します。 これには、最新の詳細ログとデバッグ画面が含まれます。 スクリプトでエラーが発生する前に何が起こったのかを追跡するために使用します。 ログ履歴の設定でスクリプト履歴記録機能が無効になっている場合は、スキップされます。 デフォルト値は 'false'です。 v4.4.2以降でサポートされています。
戻り値
コマンドは常に0(ゼロ)を返します。
使用例
Log
"Suspicious image search coordinates:
_SEARCH_X={
_SEARCH_X
},
_SEARCH_Y={
_SEARCH_Y
}
"
level="WARNING"
- 警告ログを作成します。
説明 |
次へ | 前へ | トップ^ |
Report
環境設定で構成可能であり 、デフォルトは 'enterprise'
。 変数名 | 説明 |
_REPORT_FILE = <file> | 最初に指定されたレポートファイルへの絶対パス(スクリプトによってレポートが作成されている場合)。 v4.0以降でサポートされています。 |
_REPORT_FILE_ <n> = <file> | N番目のレポートファイルへの絶対パス。 番号は1から始まります。v4.1.3以降でサポートされています。 |
_ REPORT_FILE_ <extension(拡張子)> = <file> | 指定された拡張子を持つレポートファイルへの絶対パス(大文字)。 たとえば 、_REPORT_FILE_XMLおよび_REPORT_FILE_HTMLという変数があるため 、レポートファイルが指定さ れて "results.xml;results.html" いるとします。 |
_REPORT_FILE_RELATIVE = <file> | プロジェクトレポートフォルダに対する相対的な最初のレポートファイルのパス。 レポートはデフォルトで プロジェクトレポートディレクトリ( _REPORT_DIR を参照 )の 一意のフォルダに保存されるため、 この変数を使用して動的に作成されたフォルダの名前を取得できます。 たとえば MyTestScript.tpr
、のコマンドを含む と呼ばれるテストスクリプトは
、変数を次のようなパスに "Report report.xml"
設定 します
"MyTestScript.tpr.2a12fd2/report.xml" 。 相対的なプロジェクトパスは、Web上に公開されているレポートへのリンクを簡単にするためのものです。 あなたがプロジェクトを置くとき レポートフォルダをWebサーバのドキュメントルートに追加すると、この変数を利用してレポートURLを構築できます。 ユースケース について は、 Sendmail コマンドの例を 参照してください 。 v4.1.3以降でサポートされています。 |
_REPORT_FILE_RELATIVE_ <n> = <file> | N番目のレポートファイルの相対パス。 上記の説明を参照してください。 v4.1.3以降でサポートされています。 |
_REPORT_FILE_RELATIVE_ <extension(拡張子)> = <file> | 指定された拡張子を持つレポートファイルの相対パス。 上記の説明を参照してください。 v4.1.3以降でサポートされています。 |
_REPORT_FILENAME = <file> | 最初に指定したレポートファイルの名前。 |
_REPORT_FILENAME_ <n> = <file> | N番目のレポートファイルの名前。 上記の説明を参照してください。 v4.1.3以降でサポートされています。 |
_REPORT_FILENAME_ <extension(拡張子)> = <file> | 指定された拡張子を持つレポートファイルの名前。 上記の説明を参照してください。 v4.1.3以降でサポートされています。 |
"enterprise"
コードです 。
デフォルトのプロバイダ( scope パラメータ を除く)の動作を正確にコピーし、 すべての設定パラメータを再利用します。
しかし、違いは、テスト出力を処理して結果のレポートファイルを生成する方法です。
デフォルトのプロバイダとは異なり、この スクリプト もscript、 step 、 timerの テスト結果を サポートして おり、スクリプト実行ログと緊密に統合されています。 .xml
ファイルがコマンド引数で指定されている場合)、プロバイダはすべてのテスト出力を含む単純なXMLファイルを生成します。 形式はプロバイダの Java API documentation で指定されています 。 XMLレポートはXMLスタイルシート(XSL)にリンクされているため、Webブラウザで表示され、デフォルトプロバイダが生成したHTMLファイルとまったく同じビューを提供します。 HTMLビューへのXMLデータの解釈はWebブラウザ側で行われるため、XML出力は高速かつ効率的です。 XMLファイルは、テスト結果を第三者のアプリケーションにエクスポートするために、さらに再利用することができます。 default"
です。以下のライフサイクルを持ちます: Report
、スクリプトの最後にコマンド を呼び出しても
、HTMLレポートには、 Report
コマンドが実行される 前のすべてのスクリーンショットと警告が一覧表示 されます。 画像のリストは、画像の原点に応じて現在制限されている可能性があり scope
ます(下 の パラメータを参照)。 Screenshot
コマンドを使用して 実行されたすべての、または失敗した比較結果を表示します。
コマンド Compareto
とWaitfor match/mismatch
コマンドで 実行されるイメージの比較 は決してリストされないことに注意してください。
その根拠は、テーブルに機能的なリンクを提供するためには、とにかくスクリーンショットを作成しなければならないということです。
例については、上のリンクのサンプルレポートを参照してください。
<! - version = 1.3-20061210 - >
|
このレポートを生成するために使用されたHeartCore Robo Desktopバージョンとビルドを示します。 |
<! - running = false - >
|
スクリプトの実行が実行中か、すでに終了しているかを示します。 |
<! - stopped = false - >
|
'true'の値は、GUIモードのStopボタンまたはCLIのCtrl + Cを使用して、スクリプトの実行がユーザーによって手動で停止されたことを示します。 |
<! - 一時停止= false - >
|
'true'の値は、スクリプトの実行が手動またはプログラムで( Pause
コマンド を介して )一時停止したことを示します。 |
<! - exitCode = 0 - >
|
終了コード。 ゼロは成功を示し、その他の正の数は失敗と解釈されます。 Exit
コマンドを 参照してください 。 |
<! - imageCount = 3 - >
|
レポート内のイメージの数。 |
<! - failedComparisons = 0 - >
|
失敗したイメージ比較の数。 |
<! - warningCount = 0 - >
|
Warning
コマンド によって追加された警告の数 。 |
<! - executionTimeInSec = 44 - >
|
秒単位のスクリプト実行時間。 |
オプション
file(s)
-
レポートを保存するファイル名。 HeartCore Robo Desktopは、パスとファイルを作成できるかどうかをチェックし、そうでない場合はエラーを報告します。
ファイル拡張子は、プロバイダによって宣言されたサポートされている形式のリストに対して検証され、不一致で構文エラーが発生します。
"enterprise"
1つのファイルをサポートします。( .xml
、
.htm
、 .html
および .zip
ファイル。)
コマンドは、複数の書式を並行して作成するために 、 1つのファイル ( "results.xml"
)または セミコロンで区切られたファイル ( "results.xml;results.html;archive.zip"
)のリストを受け入れます。
ZIPファイルがリストされると、レポートディレクトリ(サブフォルダを含む)の内容がアーカイブされます。
パフォーマンス上の理由から、アーカイブはスクリプトの終了後に1回だけ作成されます。
ZIPと複数の入力ファイルのサポートが4.1.3で導入されました。 "default"
プロバイダは .htm
.html
をサポートします。 1つのファイルのみを受け入れます。 ファイル名は、相対(例えば report.xml
)か絶対(例えば
/root/report/report.xml
)の どちらか です。 パスが存在しない場合、通常は作成されますが(デフォルトのプロバイダ)、この動作はプロバイダ固有のものである可能性があります。 相対パスを使用する場合、レポートファイルと関連するすべての出力は、 _REPORT_DIR
変数で 定義されたディレクトリに保存する必要があります。
provider=<provider_name>
desc=<description>
scope=<scope_id>
scope
パラメータは、スクリーンショットの作成者に基づいてレポートに含める
イメージを定義する方法を提供します。 このパラメータは デフォルトレポートプロバイダ だけでサポート されており、Enterpriseでは無視されます。 許容できる値は2つあります。 onexit=<true|false>
戻り値
レポートコマンドが返すレポートプロバイダが開始され、最初の報告書を作成して保存成功している場合は0(ゼロ)。
エラーが発生した場合、つまりレポートファイルを作成できない場合、コマンドは1を返します。
使用例
Report results.xml
desc="This is my XML report."
- レポートジェネレータを作成し、XMLレポートの生成を開始します。 相対ファイルが提供されると 、レポートは
_REPORT_DIR
変数の 値で定義されたディレクトリに保存され ます。 提供された説明がレポートヘッダーに表示されます。
Report results.xml;results.html;results.zip desc="This
is my XML and HTML report together with a ZIP archive."
- レポートジェネレータを作成し、XMLおよびHTMLレポートの生成を開始します。 一度終了したレポートフォルダのZIPファイルを作成します。
Var
_REPORT_DIR=/var/apache/htdocs/robot
Report index.html scope=file
Screenshot
start_state.jpg
desc="Initial state of the {_MACHINE} desktop. Starting
execution of the {_FILE} script..."
- これは、reportコマンドの使用方法に関する典型的な例です。 最初のコマンドは、実際にApacheのドキュメントルート内にあるレポートファイルとスクリーンショットの出力パスを定義します。 これは、ユーザーがウェブブラウザを通じてオンラインでレポートを見ることができるので非常に便利です。 レポートとスクリーンショットコマンドの両方で出力の相対パスが使用されるため、すべてが出力ディレクトリに保存されます。
説明 |
次へ | 前へ | トップ^ |
'template'
、
'passrate'
、 'onpass'
、を 'onfail'
。 'template'
パラメータを使用し
てテンプレートイメージを明示的に指定しない限り 、テンプレートディレクトリで、名前と拡張子がPNG、GIF、BMP、およびJPG(この順番)に一致するテンプレートが検索されます。 スクリーンショットの設定と同じ名前のテンプレートを検索するには、スクリーンショットの設定でこの機能をオフにします。 オプション
file
-
イメージを保存するファイル名。 サポートされている拡張子(例えば、 "png"または "jpg")が必要です。
サポートされているイメージ形式はJavaバージョン依存します。 Java 1.6以降PNG、JPG、GIF、およびBMPをサポートします。
ファイル名は、相対(例えば img.jpg
)か絶対(例えば /root/report/img.jpg
)のどちらか です。
パスが存在しない場合は作成されます。
相対パスまたはファイル名だけを使用すると、イメージは _REPORT_DIR変数 で定義されたディレクトリに保存されます。
desc=<description>
area=[x:<x>][,y:<y>][,w:<width>][,h:<height>]
x:<x>,y:<y>,w:<width>,h:<height>
'の 形式を持ち 、各座標はピクセル(例: ' x:225
')またはパーセンテージ(たとえば ' x:23%'
) で指定できます 。
x、y、幅または高さのいずれかが省略された場合、Robotは全画面値を使用して欠落しているパラメータ、つまり ' x:0,y:0, w:<screen_width>, h:<screen_height>
' を決定します 。 また、 Screenshot ウィンドウ を使用して比較領域を定義することもでき ます。 attach=<list_of_files>
template=<image_collection>
-
image_collection -セミコロンで区切られた画像を1つまたは複数の画像ファイル名やフォルダ(「;」)リモートデスクトップの画像と比較します。
Linux / Unixでは、リストが誤って解析されるため、ファイル名にセミコロンが含まれていないことを確認してください。 ファイル名は、相対(例えば img.png
)か絶対(例えば /root/report/img.png
)の どちらか です。
相対パスを使用すると、イメージは_TEMPLATE_DIR変数で定義されたディレクトリで検索され ます 。 サポートされるイメージ形式は、Javaバージョンおよびインストールされた拡張機能(Java Advanced Imagingライブラリ、JAIなど)の対象です。
Java 1.6以降でPNG、JPG、GIF、およびBMPをサポートします。
テンプレートイメージは、指定されたリストの順序でリモートデスクトップイメージと比較されます。
テンプレートの比較で肯定的な結果(指定されたイベントに応じて一致または不一致のいずれか)が発生した場合、条件は満たされたとみなされ、終了コード0でコマンドが終了します。
あらかじめ 定義された変数 _COMPARETO_TEMPLATE_INDEX
を使用ます。
詳細は、 画像比較固有の変数 を 参照ください 。
画像の比較は、JPEGなどの非可逆圧縮の画像に対しては実行しないでください。 代わりにPNGまたはBMPを使用してください。 それらは画像情報の100%を保存し、信頼性の高い安定した比較結果を保証します。 イメージの比較については Comparetoコマンドの仕様 で説明します。
"passrate=95"
または "passrate=95%"
)を 続けてもかまいません 。 このパラメータを省略すると、メソッドまたはHeartCore Robo環境設定で定義されたデフォルトの合格率が使用されます(デフォルト値は "default"では 95%
、 "search"
および "search2"の方法 では100%です )。
method=<comparison_method>
methodparams=<custom_params>
cmparea=[x:<x>][,y:<y>][,w:<width>][,h:<height>]
x:<x>,y:<y>,w:<width>,h:<height>
' の形式を持ち、 各座標はピクセル単位(たとえば。 "x:225"
)またはパーセント 単位("x:23%"
)で指定できます 。
x、y、幅または高さのいずれかが省略された場合、Robotはフルスクリーン値を使用して不足しているパラメータ( x:0, y:0,
w:<screen_width>, h:<screen_height>
) を決定します 。 onfail=<command>
onpass=<command>
drawresults=<true|false>
drawdiff=<true|false>
method_specific_params
戻り値
スクリーンショットが正常に保存され最終的な画像比較が成功した場合、コマンド戻り値は0(ゼロ)です。
イメージの比較が行われて失敗すると、値1が返されます。
スクリーンショットを保存できない場合(たとえば実行PCに十分な空きメモリがない場合)、コマンドは2を返します。
使用例
Screenshot
image.jpg
- 現在の リモートデスクトップの スクリーンショットを撮り
image.jpg
というファイル名で_REPORT_DIR変数の値で定義されたディレクトリ にあるファイルにJPEGイメージとして保存します。
Screenshot
/root/images/image2.png
desc="This image shows what happened after I
had clicked the Start button."
- 現在の リモートデスクトップ のスクリーンショットを撮り image.png
というファイル名で /root/images/
ディレクトリにPNGイメージとして保存します 。
実行されたスクリプトがレポートを生成すると、そこに提供された説明が表示されます。
説明 |
次へ | 前へ | トップ^ |
オプション
id
-
固有のスクリプトID。 それは数字かテキストかもしれません。 テスト結果を第三者テスト管理アプリケーションにエクスポートする場合、IDは理解可能な値でなければなりません。
HeartCore Robo Desktopデータベースにエクスポートするに は、HeartCore Robo Desktop 4.4 Integration Reference の Entity Mappingの 章に 記載されているように、IDを有効なスクリプトエンティティ番号にする必要があります 。
start|end
name
戻り値
スクリプトコマンドは常に0(ゼロ)を返します。
使用例
Script
1 start
name="Display https://www.heartcore.co.jp/"
Press Windows+R wait=3s
Typeline
"https://www.heartcore.co.jp/"
Waitfor match template="tplanlogo.png"
method=search timeout=20s
if ({_EXIT_CODE} == 0) {
Step
"Open
https://www.heartcore.co.jp/ in web browser" pass
} else {
Step
"Open
https://www.heartcore.co.jp/ in web browser" fail
Exit
1
}
Script 1 end
- Windows上のデフォルトWebブラウザでhttps://www.heartcore.co.jp/ Webサイトを開くスクリプト番号1の例。 スクリプトはイメージ検索を使用して、ページが正常に表示されたことを確認します。 デスクトップ上でHeartCoreロゴが検出された場合、スクリプトはステップの結果を記録します。 それ以外の場合、失敗したステップが記録され、スクリプトはコード1で終了し、失敗を示します。
説明 |
次へ | 前へ | トップ^ |
オプション
from=<sender_address>
to=<recipient_address>
server=<server[:port]>
subject=<subject>
text=<mail_body>
attach= <attach_file>
user=<user_name>
passwd=<password>
パラメーター と一緒に使用する 必要があります。 delayed=<true|false>
debug=<true|false>
戻り値
Eメールが送信した後、成功の場合は0(ゼロ)失敗の場合1のコマンドを返します。
使用例
Screenshot scr.png
Sendmail
to="tester@dummyserver.com" from="robot@dummyserver.com"
server="mail.dummyserver.com" subject="Screenshot
of the remote desktop" text="Please check the
attached screenshot." attach="{_REPORT_DIR}/scr.png"
- 現在のリモートデスクトップのスクリーンショットを撮って、Eメールでユーザーに送信します tester@dummyserver.com
。
Sendmail
subject="Hello" text="This is a multiline
E-mail.\nSecond line.\nThird line."
- 複数行の電子メールの例。 このコマンドは 、Sendmailのコマンド設定で'from'
、'to'
および'server'
パラメータの 正しいデフォルト値を設定した場合にのみ機能します 。
Sendmail
subject="HTML Example" text="<html><body><h1>Hi
there!</h1>How are you?</body></html>"
- HTML電子メールの例 このコマンドは 、Sendmailのコマンド設定で'from'
、'to'
および'server'
パラメータの 正しいデフォルト値を設定した場合にのみ機能します 。
Sendmail
delayed="true"
subject="Script
finished"
text="<html><body>Script
<i>{_FILENAME}</i> finished with the exit code of
{_EXIT_CODE}. See the results <a
href=\"http://myserver.mydomain.com/reports/{_REPORT_FILE_RELATIVE}\">here</a>.</body></html>"
- テストスクリプトが完了したことを受信者に通知する電子メールの例。 '
delayed'
パラメータに設定され true
たメールスクリプトが終了します後に送信されます。 レポートディレクトリは 、ホスト上のWebサーバのドキュメントルートの下 の reports / フォルダに リンクされているmyserver.mydomain.com.
と想定しています。簡単にするため
に、sendmailのコマンド設定で 'from'
、 'to'
と 'server'
パラメータの 正しいデフォルト値を設定したものと仮定します 。
説明 |
次へ | 前へ | トップ^ |
オプション
name
pass |fail|nt|na
instruct=<instructions>
expected=<expected_result_desc>
actual=<actual_result_desc>
notes=<notes>
戻り値
Stepコマンドは、常に0(ゼロ)を返します。
使用例
Compareto
template=
"application.png"
if ({_EXIT_CODE} == 0) {
Step
"Start
application" pass expected="The
application GUI opens."
} else {
Step
"Start
application" fail expected="The
application GUI opens." actual="The application
failed to start."
Exit
1
}
- Step使用の典型的な例。 スニペットは、イメージ比較を使用して、デスクトップがapplication.pngテンプレートと一致するかどうかをテストし、それに応じてステップの合格または失敗の結果を生成します。
説明 |
次へ | 前へ | トップ^ |
Report perftesting.xml
Timer
t1
start desc="My
task #1 duration"
<task
code>
Timer
t1
stop
数 | タイマー名 | 説明 | 値 |
|
t1 | My task#1のかかった時間 | 25.009秒(25009ms) |
Report perftesting2.xml
Timer load="perftesting.xml"
Timer
t1
start desc="My
task #1 duration"
<task
code>
Timer
t1
stop
数 | タイマー名 | 説明 | 値 | 基準値 | 変化する |
|
t1 | My task#1のかかった時間 | 24.984秒(24984ms) | 25.009秒(25009ms) |
|
_TIMER_<timerName>
"変数 として公開し ます。 上の例では _TIMER_t1
変数があり、スクリプトは " " などの 変数呼び出し を通じて現在のタイマー値を取得します {_TIMER_t1}
。 呼び出された変数が予約済み接頭辞 " _TIMER_
" で始まって いて、その名前が既存のタイマー名に対応しない場合、その名前は-1を返します。 この値は、タイマーの存在をテストするために使用できます。 value
パラメーターを 使用し ます。 実行中のタイマーの値を設定すると、実行中のタイマーの値が停止し、指定された値から再開するためには、コマンドには「開始」アクションが含まれていなければならないことに注意してください。 Timer t1 start
desc="My
task duration"
value
="1000"
Timer t2 value="{_TIMER_t1}+1000"
Timer t2 value="t1"
Timer t1,t2 start
Timer t1,t2
group=tgroup
Timer
tgroup
start
<task
code>
Timer
tgroup
stop
tgroupをtgroup2
という新しいグループに コピー するには、 次の ようにします。 Timer tgroup
group=tgroup2
Timer t1 ungroup=tgroup,tgroup2
Timer t1 ungroup=
Timer tgroup ungroup
=tgroup
Timer t1,t2
group=tgroup
Timer
tgroup
start value=1000 desc="Performance test"
ご存知のように、1つのコマンドで1つ以上の操作を指定できます。 これらは次の順序で実行されます。
Timer t1,t2 start
value=1000 desc="Performance test"
group="tgroup"
オプション
name(s)
- タイマーまたはグループ名、またはコマンドを適用する名前のカンマ区切りリスト。 グループとタイマーの組み合わせも許可されます。 指定された名前のいずれかにスペースが含まれている場合は、リスト全体を二重引用符で囲む必要があります。 固有の名前(複数可)が新しいタイマー(タイマー)を作成します。 名前が、以前に group パラメータで コマンド呼び出しによって作成されたグループに対応する場合、 そのグループに現在存在するタイマーのリストに展開されます。
start |stop
desc=<description>
value=<time_millis>
refvalue=<time>
load = <XML_file>
group= <group(s)>
ungroup=<group(s)>
戻り値
load
コマンドが採用した場合 、XMLファイルからの参照データを読み取るためのパラメータをXMLが有効であり、少なくとも1つのタイマー値が含まれている場合、それは0(ゼロ)を返します。 XMLにタイマーデータが含まれていないが、形式が正しい場合、このコマンドは1を返します。 ファイルを読み取ることができないか、有効なXMLファイルでない場合、このコマンドは値2を返します。
load
パラメータの ないTimerコマンドは 常に0(ゼロ)を返します。
使用例
上記の例を参照してください。
説明 |
次へ | 前へ | トップ^ |
Report
コマンド が含まれている場合 )、 Warning
コマンドを 実行 するとレポートが更新されます。 アクティブなレポートプロバイダがない場合、内部テーブルに警告が作成されますが、それは決して報告されません。 オプション
description - レポートに表示される警告のテキスト。
image=<screenshot_name>
戻り値
Warningコマンドは常に0を返します。
使用例
Report
index.html
Exec
"mozilla
file://{_REPORT_FILE}"
if ({_EXIT_CODE} > 0) {
Warning
"Mozilla failed
to start. Error output: {_EXEC_ERROR}"
}
- Execコマンドを使用してMozillaブラウザでHTMLレポートを開き、失敗した場合は警告を追加してください。
Screenshot image.jpg template=template1.png
onfail="Warning \"The image image.jpg doesn't seem to
display what is expected.\" image=image.jpg"
- スクリーンショットを撮り、それをテンプレートと比較する template1.png
。 比較が失敗した場合は、イメージの説明に警告を追加します。
説明 |
次へ | 前へ | トップ^ |
// Open the Excel file. Exit on any I/O
error.
Excel open file="C:\data\test.xlsx"
if ({_EXIT_CODE} > 0) {
Exit
{_EXIT_CODE}
desc="{_EXCEL_ERROR}"
}
// Select
the second sheet
Excel select sheet=1
// Iterate
over all data lines
for
(index=1; {index}<{_EXCEL_SHEET_ROWS}+1;index={index}+1) {
#
Read
value from the first cell
Excel
select row={index}
column="1"
#
Set value of the second cell
Excel
set row={index}
column="2" value="{_EXCEL_CELL_VALUE}"
}
終了コード | 擬似コード |
説明 |
0 |
SUCCESS |
正常終了。 |
1 |
FAILED_TO_OPEN |
入力ファイルを開くことができませんでした。 ちょうど "Excel open"によって返されます。 |
2 |
FAILED_TO_SAVE |
ファイルに保存できませんでした。 「Excel close」だけで返されます。 |
3 | FAILED_TO_CREATE | 新しいドキュメントまたはシートの作成に失敗しました。 "Excel create"だけで返されます。 |
4 |
SHEET_NOT_FOUND |
行パラメータおよび/または列パラメータは、既存のセルを指しません。 「row(行)」と「Column(列)」をサポートするすべてのセル読み取りコマンドによって返されます。 |
5 |
CELL_NOT_FOUND | 指定された座標または指定された値( "Excel find")のセルを見つけることができませんでした。 |
オプション
file=<Excel_file>
outfile=<output_Excel_file>
id = < identifier >
Sheet=<Sheet_name or index>
password=<password>
戻り値
0(SUCCESS)または1(FAILED_TO_OPEN)のいずれかOPENコマンド戻ります。
成功すると、 File と Sheet 変数グループ から変数が読み込まれます 。
使用例
Excel
open file="data.xls"
- 読み込み/書き込みモードで、スクリプトと同じディレクトリにあるMS Excelドキュメントを開きます。
Excel open file="C:\Data\data.xls"
outfile="newdata.xls"
- 指定されたディレクトリにあるMS Excelドキュメントを読み取り専用モードで開きます。 ドキュメントが閉じられたら、コンテンツを保存し、最終的にすべての変更をスクリプトディレクトリの指定された出力ファイルに保存します。 出力ファイルが存在する場合は上書きされます。
オプション
file =<Excel_file>
id=<identifier>
Sheet= <sheet_name>
password= <password>
戻り値
指定された名前のシートが既に存在する場合、例えば、障害に開放命令戻り値0(成功)または3(FAILED_TO_CREATE)を返します。 このコマンドは、
File および Sheet 変数グループ から変数を入力します 。
使用例
Excel
create file="C:\Data\log.xls"
Excel create file="C:\Data\log.xls"
sheet="Data"
Excel create sheet="Data"
- 現在開いているドキュメントに「Data」という名前の新しいシートを作成します。
Excel select [sheet=<sheet_name_or_index>] [id= <identifier>]
Excel select [row=<row_number>] [column=<column_number_or_id>]
[sheet=<sheet_name_or_index>] [id=<identifier>]
Excel select [ref=<cell_id>] [sheet=<sheet_name_or_index>] [id=<identifier>]
*赤色は必須パラメータを示します
オプション
row=<row_number>
column=<column_number_or_id>
ref=<cell_id>
sheet=<sheet_name or index>
evaluate=<true|false>
id=<identifier_or_name>
戻り値
'open'コマンド、0(成功)、4(SHEET_NOT_FOUND)または5(CELL_NOT_FOUND)を返します。
このコマンドは、 Sheet および Cell変数グループ から変数を入力します 。
使用例
Excel
select sheet=2
Excel select sheet="Data"
Excel select row=2
column=4
Excel select sheet="Results"
ref=A5
Excel find [value=<value>]
[type= <type>] [sheet=<sheet_name or index>] [evaluate=<true|false>] [id=<identifier>]
Excel find
[pattern= <reguler_expression>] [type=<type>] [sheet= <sheet_name or index>]
[evaluate=<true|false >] [id=<identifier>]
*赤色は必須パラメータを示します
オプション
value= <value>
pattern=<reguler_expression(正規表現)>
type=<type>
sheet=<sheet_name or index>
evaluate=<true|false>
id=<identifier_or_name>
戻り値
openコマンドは戻り値0(成功)、4(SHEET_NOT_FOUND)または5(CELL_NOT_FOUNDを)を返します。
セルが正常に配置されている場合、コマンドは Sheet 変数 と Cell 変数から値を設定します。
使用例
Excel
find value="Test
data"
if ({_EXIT_CODE} > 0) {
Warning
"The \"Test
data\" cell was not found."
Exit
1
}
Excel select row={_EXCEL_CELL_ROW}+1
column={_EXCEL_CELL_COLUMN}
Excel find value="2"
evaluate=true
Excel find sheet="Data"
pattern="boo.*"
Excel find type=FORMULA
pattern="SUM\(.*\)"
Excel find type=FORMULA
pattern="SUM\(.*\)" evaluate=true
Excel set
[row=<row_number>] [column=<column_number_or_id>] [sheet=<sheet_name_or_index>] [id=<identifier>]
[type=<type>] [value=<value>] [fg=<htmlColor>] [bg=<htmlColor>] [width=<columnWidth>] [height=<rowHeight>]
Excel set [ref=<cell_id>] [sheet=<sheet_name_or_index>]
[id=<identifier>] [type=<type>] [value=<value>] [fg=<htmlColor>] [bg=<htmlColor>] [width=<columnWidth>] [height=<rowHeight>]
*赤色は必須パラメータを示します
オプション
row = <row_number>
column=<column_number_or_id>
ref=<cell_id>
sheet= <sheet_name or index>
type= <type>
value=<value>
id=<identifier_or_name>
fg=<htmlColor> (v6.3.5以降)
bg=<htmlColor> (v6.3.5以降)
width=<columnWidth> (v6.3.5以降)
height=<rowHeight> (v6.3.5以降)
戻り値
openコマンドは、0(成功)、4(SHEET_NOT_FOUND)または5(CELL_NOT_FOUNDを)返します。
セルが正常に配置されている場合、コマンドは値および/またはセルタイプを設定し、
Sheet および Cell 変数グループ から 変数を設定します。
使用例
Excel
set ref=A5
value="Test data"
Excel set row=1
column=A value="2" sheet="Results"
#
Declare the variable as numeric to supress compiler error
Var
_EXCEL_CELL_VALUE=1
Excel set row=1
column=A value="2"
Excel set value={_EXCEL_CELL_VALUE}+1
type=NUMERIC
Excel set row=5
column=1 type=FORMULA value="SUM(A1:A4)"
Excel select evaluate=true
オプション
rows= <row(s)>
columns= <column(s)>
戻り値
copyコマンドは、0 (成功) またはランタイムの問題で操作を完了できない場合に構文エラーを返します。
使用例
Excel open file="source.xls"
id="source"
Excel copy rows=1-3
columns=A id="source"
Excel open file="target.xls"
id="target"
Excel copy ref=B1
id="target"
-source.xls
ファイルのセルA1、A2、およびA3をtarget.xls
ファイルのB1、B2、およびB3セルにコピーします。
オプション
row=<row_number>
column=<column_number_or_id>
ref=<cell_id>
sheet=<sheet_name_or_index>
戻り値
pasteコマンドは、0 (成功) またはランタイムの問題で操作を完了できない場合に構文エラーを返します。
Excel close [id=<identifier>] [save=<true|false>]
*赤色は必須パラメータを示します
オプション
id=<identifier_or_name>
save=<true|false>
戻り値
0(成功)またはI/Oエラーで戻り値2(FAILED_TO_SAVE)を返します。 また、すべてのExcel固有の変数をコンテキストからクリアします。
使用例
Excel open file=test.xls
...
Excel close
- ファイルを閉じます。 コンテンツが変更されている場合は、変更をtest.xlsファイルに保存します。
Excel open file=test.xls
outfile=test2.xls
...
Excel close
- ファイルを閉じます。 test.xlsからロードされたコンテンツは、変更されているかどうかにかかわらず、test2.xlsに書き込まれます。
Excel open file=test.xls
id="testfile"
...
Excel close id="testfile"
save=false
- ファイルを閉じて、最終的な変更を破棄します。 "testfile" IDは "Excel open"でファイルに割り当てられているので、 "Excel close"で指定する必要があります。
説明 |
次へ | 前へ | トップ^ |
終了コード | 擬似コード |
説明 |
0 |
SUCCESS |
正常終了。 |
1 |
FAILED_TO_OPEN |
入力ファイルを開くことができませんでした。 'File open'だけで返されます。 |
2 |
FAILED_TO_SAVE |
ファイルに保存できませんでした。 'File close'だけで返されます。 |
3 | FAILED_TO_FIND |
値を見つけることができませんでした。 失敗したテキスト検索を示すために 'File find'だけで返されます。 |
4 |
INVALID_POSITION |
行および/または列のパラメータは、ファイル内の既存の位置を指していません。 "line"と "column"をサポートするすべてのコマンドによって返されます。 |
オプション
file=<file>
outfile=<output_file>
id=<identifier>
戻り値
OPENコマンドは0(成功)または1(FAILED_TO_OPEN)のいずれかを返します。
createコマンドは、メモリにファイルを作成するだけなので、常に0を返します。
コマンドが0で終了すると、 File およびCounterの 変数グループ から変数が読み込まれます 。
使用例
File
open file="data.csv"
- 読み取り/書き込みモードでスクリプトと同じディレクトリにあるCSVファイルを開きます。
File open file="C:\Data\data.csv"
outfile="newdata.csv"
- 指定したディレクトリにあるCSVファイルを読み取り専用モードで開きます。 ファイルが閉じられたら、内容を保存し、最終的にすべての変更をスクリプトディレクトリの指定された出力ファイルに保存します。 出力ファイルが存在する場合は上書きされます。
File create file="C:\Data\log.txt"
- 新しいファイルコンテンツバッファをメモリに作成し、指定されたファイルと関連付けて出力します。
File append [text=<text>] [id=<identifier>]
*赤色は必須パラメータを示します
オプション
text=<text>
id=<identifier>
戻り値
コマンドは常に0(成功)を返します。 ファイルサイズと最終的に行数を変更するため、コマンドは Counter グループの 変数を更新します 。
使用例
File
append text="This
is one line\nwhile this is another one"
- ファイルの最後に2行のテキスト "This is one line"と "これはもう1つです"を追加します。
File append text="screws\\nails"
- 1行のテキスト「\ nails」を追加します。 バックスラッシュ文字は、改行文字として解釈されるため、この場合は2倍にする必要があります。
File insert
[text=<text>] [line=<line_number>] [column=<column_number>] [id=<identifier>]
*赤色は必須パラメータを示します
オプション
text = < text >
line=<line_number>
column=<column_number>
id=<identifier>
戻り値
lineとcolumnのパラメータがファイル内の既存の位置を指していない場合、コマンドは0(SUCCESS)または4(INVALID_POSITION)を返します。
ファイルサイズと最終的に行数を変更するため、コマンドは Counter グループの 変数を更新します 。 このコマンドは、 Line 変数グループを 更新 して、[line、column]座標が指す行に関する情報を提供します。
使用例
File read line=2
File insert text="
and potatoes" line=2 column={_FILE_LINE_LENGTH}+1
- 2番目の行の最後に "and potatoes"を追加します。 "File read"コマンドは、行の長さ(_FILE_LINE_LENGTH変数)を取得するために呼び出されます。
File find text="bananas"
File insert text="
and potatoes" line={_FILE_LINE_NUMBER} column={_FILE_LINE_COLUMN}+7
- "bananas"を検索し、テキストを挿入して "bananas and potatoes"を作成します。 この例では、findコマンドが成功するかどうかはテストされません。
File find
[text=<text>] [line=<line_number>] [column=<column_number>]
[direction=<forward|backward>] [scope=<line|file>] [id=<identifier>]
*赤色は必須パラメータを示します
オプション
text=<text>
line=<line_number>
column=<column_number>
direction=<forward|backward >
scope=<file|line>
id=<identifier>
戻り値
このコマンドは、テキストが見つかった場合は0(SUCCESS)、テキストが見つからない場合は3(NOT_FOUND)、行と列のパラメータがファイル内の有効な位置を指していない場合は4(INVALID_POSITION)を返します。 検索が成功すると、 Line 変数グループが更新され、ターゲット[行、列]座標を提供します。
使用例
File
find
text="bananas"
if ({_EXIT_CODE} == 3) {
Exit
3
}
File
insert text="
and potatoes" line={_FILE_LINE_NUMBER} column={_FILE_LINE_COLUMN}+7
- ファイルを検索して「バナナ」を探し、テキストを挿入して「バナナとジャガイモ」を作成します。 単語が見つからない場合、スクリプトは終了コード3で終了します。
File read
[line= <line_number>] [column=<column_number>] [length=<length_in_chars>]
[id= <identifier>]
*赤色は必須パラメータを示します
オプション
line=<line_number>
column=<column_number>
length=<length_in_chars>
id=<identifier>
戻り値
行と列のパラメーターがファイル内の有効な位置を指していない場合は、テキストが見つかって正常に読み取られた場合は0(SUCCESS)、正常に読み取られない場合は4を返します(INVALID_POSITION)。 成功した場合、抽出されたテキストは_FILE_READ変数に格納されます。 このコマンドは、 Line
変数グループを 更新 して、[line、column]座標が指す行に関する情報を提供します。
使用例
File
find
text="bananas" line=2 scope=line
File
read line=2
length={_FILE_LINE_COLUMN}
Type
"{_FILE_READ}"
- 2行目の "bananas"という単語を探し、単語の前にあるテキストを読んで入力します。
File parse
[line=<line_number>] [delimeter=<delimeter_char>] [separator=<separator_char>] [trim=<true|false>] [id= <identifier>]
File parse [line=<line_number>] [pattern=<regular_expression>][trim=<true|false>]
[id = <識別子>]
*赤色は必須パラメータを示します
このコマンドは、デフォルトでは、カンマ区切り値(CSV)指定に従って、指定された行から値を読み取ります。 このコマンドは、 Wikipediaの Comma-Separated Valuesの記事で指定されたルールと互換性が
あり、複数行の値をサポートします。 解析メカニズムは、オプションのカスタムテキスト区切り文字、値区切り記号でさらにカスタマイズできます。 トリミングモード。
"pattern"パラメータが指定されている場合、このコマンドは、指定されたJava互換の正規表現に基づいて行を解析します。 この方法は java.lang.String.split()
メソッドを利用しており、基本的にCSVのメカニズムとは異なります。 たとえば、スペースで区切られた個々の単語を解析するには、正規表現「\ s」を使用します。 このモードはCVSの解析と混在することはできません。 "delimeter"や "separator"と同時に "pattern"を指定することはできません。
解析された値は、一連の番号付き変数(_FILE_PARSE_VALUE1、_FILE_PARSE_VALUE2、...)とカウンタ (_FILE_PARSE_COUNT)を介して使用可能になり、ネストされた変数名を持つforループを介してスクリプト内で取り出すことができます(例のセクションを参照) 。 また、このコマンドは行変数を変更し、行番号を最後に処理された行に設定します。 これは、複数行の値を含む可能性のある行に対して正しく反復することを可能にする重要な機能です。
オプション
line=<line_number>
delimeter=<delimeter_char>
separator=<separator_char>
pattern=<regular_expression>
trim=<true|false>
id=<identifier>
戻り値
行と列のパラメーターがファイル内の有効な位置を指していない場合は、テキストが見つかって正常に読み取られた場合は0(SUCCESS)、正常に読み取られた場合は4を返します(INVALID_POSITION)。 成功すると、コマンドは Parse
変数グループに値を設定し、 行
1 も 処理された行についての情報で 更新します 。
使用例
Wikipediaで 例として挙げられている一連のデータを見てみましょう :
1997年 | フォード |
E350 |
AC、ABS、月 | 3000.00 |
1999年 |
シボレー |
ベンチャー「Extended Edition」 | 4900.00 | |
1999年 |
シボレー | ベンチャー「Extended Edition、Very Large」 | 5000.00 | |
1996年 |
ジープ |
グランドチェロキー | 販売しなければならない! 空気、ムーンルーフ、ロード |
4799.00 |
対応するCSVファイルは次のようになります。
1997,Ford,E350,"ac, abs,
moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
次のスクリプトは、行を1つずつ解析し、個々のCSV値を出力します(結果が接続されているリモートデスクトップのテキストエディタを開くのを確認するため)。 また、通常、行の5番目の値にあるすべての価格の合計を計算して出力します。 2番目の最後の行には複数行の値が含まれているため、ファイルの行数を単純に反復することはできません。
File open file="data.csv"
# We declare the fifth
variable just to supress compiler error in the Eval cmd
below
Var sum=0
_FILE_PARSE_VALUE5=0
for
(i=1; {i}<{_FILE_LINE_COUNT}; i={i}+1) {
File
parse
line={i}
Typeline
"Line #{i}:"
for (j=1; {j}<{_FILE_PARSE_COUNT}+1;
j={j}+1) {
Typeline
" Value #{j}:
{_FILE_PARSE_VALUE{j}}"
}
# Add the
car price from column 5 to the sum
Eval
sum={sum}+{_FILE_PARSE_VALUE5}
# As the
parse command updates the Line var group with number of the
last
#
processed line, this will alow us to skip lines with
multiline values
Var
i={_FILE_LINE_NUMBER}
}
Typeline
"Summary value: ${sum}"
Line
#1:
Value #1: 1997
Value #2: Ford
Value #3: E350
Value #4: ac, abs, moon
Value #5: 3000.00
Line #2:
Value #1: 1999
Value #2: Chevy
Value #3: Venture
"Extended Edition"
Value #4:
Value #5: 4900.00
Line #3:
Value #1: 1999
Value #2: Chevy
Value #3: Venture
"Extended Edition, Very Large"
Value #4:
Value #5: 5000.00
Line #4:
Value #1: 1996
Value #2: Jeep
Value #3: Grand Cherokee
Value #4: MUST SELL!
air, moon roof, loaded
Value #5: 4799.00
Summary value: $17699
もう1つの例 :数字が1つ以上のスペースまたはタブで区切られたテキストファイルを作成しましょう:
1 14 23 9 100
117 5 7
すべての数値の合計を "count"という変数に計算するには、通常、次のスクリプトを使用します。 データファイルはCSVではないため、Javaの正規表現「\ s」を使用する必要があります。
File open file="C:\numbers.txt"
Eval count=0
Var _FILE_PARSE_COUNT=0
_FILE_PARSE_VALUE1=0
for (i=1; {i}<{_FILE_LINE_COUNT}+1; i={i}+1) {
File
parse line={i}
pattern="\s"
for (j=1; {j}<{_FILE_PARSE_COUNT}+1;
j={j}+1) {
Eval
count={count}+{_FILE_PARSE_VALUE{j}}
}
}
File delete
[line=<line_number>] [column=<column_number>] [ length=<length_in_chars>] [id=<identifier>]
*赤色は必須パラメータを示します
オプション
line=<line_number>
column=<column_number>
length=<length_in_chars>
id=<identifier>
戻り値
コマンドは、テキストが見つかって正常に削除された場合は0(SUCCESS)を戻し、行と列のパラメーターがファイル内の有効な位置を指していない場合は4(INVALID_POSITION)を戻します。 コマンドは、削除されたテキストを_FILE_DELETED変数に保存します。 削除操作によってファイルのサイズが変更され、最終的に行数が変更さ
れるため、Lineグループだけでなく Counter グループ からも変数が更新されます 。
使用例
File
delete line="1"
- 最初の行(改行文字を含む)を削除します。
File delete line="2"
length={_FILE_LENGTH}
- 2行目からファイルの最後までをすべて削除し、最初の行だけを残します。
for (i=1; {i}<{_FILE_LINE_COUNT}; i={i}+1) {
File
delete line={i}
length=10
}
- 各行の最初の10文字を削除します。
File read line=1
File delete line="1"
column={_FILE_LINE_LENGTH}+1 length=1
- 最初の行の最後にある新しい行の文字を削除し、1行目と2行目を結合します。
オプション
save=<true|false>
id=<identifier>
戻り値
0(成功)またはI/Oエラーで2(FAILED_TO_SAVE)を返します。
また、コンテキストからすべてのファイル固有の変数をクリアします。
使用例
File open file=test.txt
...
File close
- ファイルを閉じます。 コンテンツが変更されている場合は、変更をtest.txtファイルに保存します。
File open file=test.txt
outfile=test2.txt
...
File close
- ファイルを閉じます。 test.txtからロードされたコンテンツは、変更されているかどうかに関係なく、test2.txtに書き込まれます。
File open file=test.txt
id="testfile"
...
File close id="testfile"
save=false
- ファイルを閉じて、最終的な変更を破棄します。 "testfile" IDは "File open"のファイルに割り当てられているので、 "File close"と "File close"の両方で指定する必要があります。
説明 |
次へ | 前へ | トップ^ |
server=<server_address>
protocol=<IMAP|POP3>
user=<user_name>
password=<password>
変数名 | 説明 |
_EMAIL_SERVER | サーバー名またはIPアドレス |
_EMAIL_PROTOCOL | サーバーの種類。「POP3」または「IMAP」 |
_EMAIL_PROTOCOL | サーバーの種類。「POP3」または「IMAP」 |
_EMAIL_PASSWORD | パスワード |
Mail get max=10 read=false subject="Request"
変数名 | 説明 |
_EMAIL_TOTAL_COUNT=<number> | 最後に接続したメールフォルダー内のメッセージの総数 |
_EMAIL_NEW_COUNT=<number> | 最後に接続した電子メールフォルダー内の新しい(未読)メッセージの数 |
_EMAIL_COUNT=<number> | 指定された基準に一致する取得されたメッセージの数 |
_EMAIL_FROM_<n>=<address> | n番目のメッセージの送信者アドレス |
_EMAIL_TO_<n>=<address(es)> | n番目のメッセージの受信者またはセミコロンで区切られた受信者リスト |
_EMAIL_SUBJECT_<n>=<text> | n番目のメッセージの件名 |
_EMAIL_BODY_<n>=<text> | n番目のメッセージの本文 |
_EMAIL_READ_<n>=<true|false> | n番目のメッセージのSEENフラグインジケーター(false =未読、true =既読) |
_EMAIL_FOLDER_<n>=<name> | n番目のメッセージが属するフォルダー名。 |
_EMAIL_UID_<n>=<id> | n番目のメッセージの識別子。 "set" および"delete" 操作に使用されます。 |
_EMAIL_ATT_COUNT_<n>=<number> | n番目のメッセージの添付ファイルの数 |
_EMAIL_ATT_NAME_<n>_<k>=<name> | メッセージで指定されている、n番目のメッセージのk番目の添付ファイルのファイル名 |
_EMAIL_ATT_FILE_<n>_<k>=<file_path> | ローカルハードドライブ上のn番目のメッセージのk番目の添付ファイルへのファイルパス |
オプション
folder=<folder_name>
オプション
folder=<folder_name>
オプション
folder=<folder_name>
戻り値
コマンドは0(成功)のみを返します。 メールサーバー接続が失敗した場合、スクリプトを終了するエラーがスローされます。
使用例
Mail
get server=imap.gmail.com user=john.doe@gmail.com password=welcome max=10 read=false
- 指定されたGoogleアカウントからの最新の10通のメールで未読のメールを検索し、「既読」としてマークします。
Var _EMAIL_SERVER=imap.gmail.com
Var _EMAIL_USER=john.doe@gmail.com
Var _EMAIL_PASSWORD=welcome
Mail
get max=20 read=false attachment=".xls"
for (i=1; {i}<={_EMAIL_COUNT}; i={i}+1) {
Excel open file={_EMAIL_ATT_FILE_{i}_1}
Excel select ref=A1
Log "Value at A1 of the file {_EMAIL_ATT_NAME_{i}_1} is: {_EXCEL_CELL_VALUE}"
Mail set uid={_EMAIL_UID_{i}} read=true
}
- 最初の添付ファイルにMicrosoft Excel 97ファイル(.xls)を含む最近の未読メッセージをダウンロードします。
ファイルを開き、最初のセル値を記録します。 次に、メッセージを「既読」としてマークします。
この例は、電子メールによるプロセスを自動化する方法を示しています。
ユーザーは、指定されたアドレスにリクエスト(フォーム)を電子メールで送信できます
指定されたアドレスで、実行中のRobotインスタンスによってピックアップされ、処理されます。
4. イメージ比較機能
4.1 イメージ比較の概要
イメージ比較メソッド は、接続されたデスクトップの画像を分析するアルゴリズム/技術です。
これらはテストスクリプトで使用され、デスクトップの内容を確認し、GUIコンポーネントやテキストなどの比較対象を取り出し、その結果に基づいて動作します。
ほとんどのメソッドは、1つまたは複数のイメージファイル( 「テンプレートイメージ」 )およびイメージフォルダ( 「テンプレートイメージコレクション」 )で動作します。
これらの成果物は、 イメージコレクション と 画像メタデータ の章で 詳しく説明されています。
イメージ比較メソッドのプラグインは、以下の3つの スクリプト言語コマンド とその Javaメソッドの対応 言語と密接に統合されています。
これらは、通常 ホスティングコマンドまたはJavaメソッド と呼ばれる比較メソッドのコンテキストにあります。
コマンド
Javaメソッド
説明
Compareto
compareTo()
現在選択されているデスクトップに選択した画像比較方法を一度適用します。
通常、コンポーネントの存在を検証したり、座標を取得し
たり、テキスト を取得し たり、画面の内容が予期されるかどうかを検証するために使用されます。
Screenshot
screenShot()
リモートデスクトップのスクリーンショットをファイルに保存し、オプションで
Comparetoコマンドの内部呼び出しによって選択したイメージ比較メソッドを適用します。
Waitfor match/mismatch
waitForMatch()
waitForMismatch()
選択したイメージ比較メソッドが「成功」(戻りコード0) の結果を生成するまで
( match「一致」 ) または mismatch「不一致」 まで実行を一時停止し ます。
通常は、期待されるコンポーネントまたはテキストが画面に表示されるか、画面から消えるまで 待機するために使用され ます。
各比較方法は、一意の 名前 ( コード とも呼ばれます)(たとえば、 「search2」 または 「object」 ) によって識別されます。 コマンドフレームワークによってサポートされて いる標準の "passrate" および
"cmparea" パラメータに加えて、各メソッドは特定のアルゴリズムに特有の任意の数のオプションパラメータを宣言することができます。 これらのパラメータは、呼び出しコマンドで表示されます。
すべての画像比較メソッドがプラグインとして内部的に実装されているため、ユーザーはカスタムアルゴリズムを自由に開発し、スクリプト言語とJava Test Script APIに統合することができます。 詳細については、 ImageComparisonModule
インタフェースを参照してください。
次の例では、最も頻繁に使用される
'search2'アルゴリズムを、すべてのフレームワークで提供される
'passrate' と 'cmparea'
、それの特有なパラメータ 'order'とともに示します。 :
Compareto
"buttonOk.png" passrate="70" method="search2"
cmparea="x:258,y:114,w:417,h:298" sort="none"
Screenshot
"s.jpg"
template="buttonOk.png"
passrate="70" method="search2" cmparea="x:258,y:114,w:417,h:298"
sort="none"
Waitfor
"match"
template="buttonOk.png"
passrate="70" method="search2" cmparea="x:258,y:114,w:417,h:298"
sort="none"
Javaテストスクリプト の形式の同じ例 :
compareTo(new File[] { new File( "buttonOk.png"
) }, 70.0f, new
Rectangle(258, 114, 417, 298), "none" );
screenshot(new
File( "s.jpg"
), (String) null
, (Rectangle) null
, new
File[] { new
File( "buttonOk.png"
) }, 70.0f, new
Rectangle(258, 114, 417, 298), "none" , false);
waitForMatch(new
File[] { new
File( "buttonOk.png"
) }, 70.0f, (String) null , new Rectangle(258, 114, 417, 298),
(String) null
, "none"
, (String) null);
一般的な方法で失敗したイメージの比較を処理するためのメカニズムが2つ組み込まれています。
- ComparisonFailureFallback は、(V2.3以降)の手順をフォールバックします。
- イメージドクター ウィザードと Imagedoctor コマンド (V3.5以降)で利用します。
4.1.1 イメージコレクション
イメージコレクションは、様々な視覚的外観または単一のグラフィックオブジェクトの状態、例えば様々な環境およびオペレーティングシステム上のボタンの状態をキャプチャした画像を示します。
コレクションは、 CompareTo 、 Screenshot および WaitFor match/mismatch
スクリプト言語コマンドまたは対応するJavaメソッドによって使用され、すべての環境で画面上のコンポーネントをシームレスに見つけることができます。
HeartCore Robo Desktopバージョン2.0以降では、 セミコロンで区切られたイメージファイルリスト を使用してイメージコレクションを
サポートしています。 例えば、二つのテンプレート画像に代表される「OK」ボタンを検索する
buttonOK1.png
と buttonOK2.png
がある場合、 テンプレートフォルダは次のものを使用します:
Compareto "buttonOK1.png;buttonOK2.png" method=search
HeartCore Robo Desktopバージョン2.2では、 フォルダ によって表される動的イメージコレクションが導入されています。
このメカニズムにより、テストスクリプトコードを更新することなくテンプレート画像を動的に追加、削除、編集することができます。
各フォルダは、ロスレスフォーマット(PNG、BMP、WBMP、GIF)のJavaサポートされたイメージに対して再帰的に検索され、生成されたイメージリストに対して指定された
イメージ比較アクションが実行されます。
たとえば、前の例の画像を呼び出されたフォルダbuttonOK
に移動し、コマンドを次のように変更することができます。
Compareto "buttonOK" method=search
フォルダから取得されたイメージは、デフォルトで、基本となるオペレーティングシステムによって返された自然順序で処理されます。 バージョン2.3.3では、この動作を変更してイメージを比較する前にソートすることを可能にする新しいオプションのメカニズムが導入されました。
- デフォルトの並べ替えモードを設定するには、環境設定ウィンドウの CompareToコマンド パネルを 参照してください。
この設定は、次の箇条書きで説明するように、スクリプトによってソートモードが無効にされない限り、アプリケーション全体で使用されます。
- スクリプトは、 _COMPARETO_SORT_MODE 変数を目的のソートモードインデックスに 設定することによって、ソートモードを設定できます。
変数はスイッチとして機能し、変数がリセットされるかスクリプトの終わりに達するまで、すべての比較コマンドによってソートモードが適用されます。 許容できる値は次のとおりです。
0 -画像ファイル名(昇順)によるソート
1 -画像ファイル名(降順)によるソート
2 -画像ファイルの最終更新日(昇順)によるソート
3 -画像ファイルの最終更新日(降順)によるソート
、例:
前の例の画像をファイル名の降順( buttonOK2.png
が最初)で処理する:
Var _COMPARETO_SORT_MODE=1
Compareto
"buttonOK"
method=search
ソートモードをデフォルトにリセットするには、変数を空の文字列に設定するだけです。
Var
_COMPARETO_SORT_MODE=
イメージコレクションは、imageとimage_collectionからなるファイルリストに自由に組み合わせることができます。 たとえば buttonApprove1.png
、 buttonApprove2.png
画像で 表される「OK」ボタンまたは「Approve」ボタンを検索するには、次の ようにします。
Compareto "buttonOK;buttonApprove1.png;
buttonApprove2.png
" method=search
または、 buttonApprove
書き込むことができる2つのイメージのために 呼び出されたフォルダを作成します 。
Compareto "buttonOK;buttonApprove
" method=search
4.1.2 画像メタデータ
HeartCore Robo Desktopバージョン2.2以上では、 ソース座標 と クリックポイント などのイメージメタデータを含むテキストファイルを追加して、テンプレートイメージをハードドライブに保存します。
イメージがイメージ比較に使用されるときはいつでも、データはロードされ、事前定義された変数の形でテストスクリプトで利用可能になります。
メタデータファイルはJavaの.properties形式であり、その名前はイメージファイル(通常<imagefile>。<formatextension> .properties)から取得されます。 GUIを使用すると、以前のバージョンまたはサードパーティのイメージエディタで作成された既存のテンプレートのメタデータファイルを作成できます。 ただし、ソース座標は失われているので、この場合のGUIではクリックポイントのみを編集して保存することができます。
ソース座標 テンプレート作成時に元の座標をデスクトップイメージに保存します。 それらは、_COMPARETO_SOURCE_Xおよび_COMPARETO_SOURCE_Y変数を介してスクリプトに公開されます。 これらの変数は、メタデータファイルが使用できない場合、またはデータが入力されない場合(v2.2より前に作成されたテンプレートまたはサードパーティのツールを使用して作成された場合)は設定されません。
ソース座標を使用すると、オブジェクトが画面上を移動したかどうかをテストするアクションを記述できます。 このアクションの典型的なコードは次のとおりです。
Compareto "buttonOK" method=search
if
(
"{_COMPARETO_SOURCE_X}" != "{_SEARCH_X}"
&& "{_COMPARETO_SOURCE_Y}" != "{_SEARCH_Y}
")
{
#
Object has moved
...
}
Click Point は、クリック、プレス、リリース、ドラッグなど、最終的なマウス操作に最適な場所を表します。
ポイントはデフォルトでイメージセンターになりますが、テンプレートイメージの四角形の内側または外側の任意の場所を指すようにカスタマイズすることができます。
クリックポイントの座標は、テンプレート画像の左上隅から相対座標で内部に格納されます。
クリックポイントの使用はイメージ検索のみで意味があります。
オブジェクトを画面上に配置すると、クリック点を絶対座標に再計算し、それらを_COMPARETO_CLICK_Xおよび_COMPARETO_CLICK_Y変数の下に格納します。
メタデータファイルが存在しない場合(v2.2より前に作成されたテンプレート)、変数も使用でき、デフォルトでイメージセンターに保存されます。
次のコードスニペットは、オブジェクトを検索し、成功するとそのクリックポイントをクリックします。
Compareto "buttonOK" method=search
if (
{_EXIT_CODE} == 0
) {
Mouse click to="x:{_COMPARETO_CLICK_X},y:{_
COMPARETO_CLICK
_Y}"
}
4.1.3 イメージ比較の推奨事項
大部分の画像比較方法の信頼性は、画素レベルで画像差を生じる要因によって減少します。 これらの影響を最小限に抑えるには、次のヒントを考慮してください。
- リモートデスクトップの背景を単色に変更します 。
テストするアプリケーションウィンドウに含まれていない色を選択します。
これにより、バックグラウンドを含むテンプレートイメージが別の環境で失敗することはありません。
また、スクリプトをより高速にする可能性もあります(通常、画像の比較方法の性能が向上します)。
- 環境や表示設定の変更 も画像比較の機能に影響します。
テンプレートを24ビットカラーのリモートデスクトップに作成し、後でVNCサーバーを8ビット色深度で再起動すると、機能しません。
- マウスポインタがデスクトップイメージの一部としてレンダリングされている場合(マウスポインタをデスクトップビューから移動してもポインタが表示されたままであることを意味します)、 マウスの移動 コマンドを 使用し てマウスポインタを比較の前に一定の位置 。 また、マウスポインタがテンプレートイメージ上にないことを確認してください!
- JPEGなどの 不可逆圧縮画像との 画像比較は行わないでください 。
ツール上で画像一致率が下がります(不一致ピクセルが多すぎるため比較が失敗する可能性が高い)。
PNG形式とBMP形式は、画像情報の100%を保存し、信頼性の高い安定した比較結果を保証するため、好ましい形式です。
GIFは一般的にも良いものです。 ただし、パレットの色は256色に制限されていることに注意してください。
多くのツールでは、制限を満たしていないと色が平坦化されます。 GIFテンプレートを作成した直後に、それが正しく機能することを確認するために、
GIFテンプレートをデスクトップイメージに対して再テスト(比較)することをお勧めします。
- 一部のシステムやアプリケーションでは 、マウスポインタがマウスポインタの上にあるときに
ボタンやメニュー項目 をハイライト表示する傾向 があります。
その場合2つのテンプレートを作成します。1つは通常のテンプレート、もう1つはハイライトされたテンプレートです。
それを適用可能なすべてのイメージ検索のテンプレートリストとしてその画像のあるフォルダを指定することで使用できます。
4.2 イメージ検索メソッド
イメージ検索メソッドは、テンプレート画像、 画像収集
、またはサイズ、色、または形状などのオブジェクトパラメータに 基づいて、オブジェクト(構成要素)について画面を検索します 。
このメソッドは、通常、指定されたオブジェクトが検出された画面上の位置および/または矩形のリストを返します。
このメソッドグループは、 「ボタンを見つけてクリックする」 や
「コンポーネントが画面に表示されていることを確認する」などのアクションを自動化するためによく使用されます。
HeartCore Robo Desktop 4.4でサポートされている画像検索方法は次のとおりです。
- イメージ検索V2
(コード"search2")メソッドは、テンプレート画像とコレクションによって、コンポーネントの画面を検索します。
このアルゴリズムは、3つの検索モード(正確、耐性およびファジィ)と、最も低い差または位置による結果の順序付けを特徴とします。
-
イメージ検索 (コード"search")メソッドはV2アルゴリズムの古いバージョンです。
また、テンプレート画像と少数の画像の変更に対する許容範囲が限定されたコレクションによって、コンポーネントの画面を検索することもできます。
- オブジェクト検索 (コード"object")メソッドは、カラー、サイズおよび任意のサンプルテンプレート画像によってオブジェクトを配置します。
このアルゴリズムは、オブジェクトの回転したインスタンスを探索することができ、最終的なオブジェクトの重なりに対して一定のロバスト性を提供します。
この方法は、アプリケーションのGUI自動化には適しておらず、むしろGIS出力、マップ、チャートなどのグラフィカルシステムの分析を対象としています。
4.2.1 イメージ検索V2( "search2")
説明
トップ^
イメージ検索V2 (コード
"search2"、 V3.0以降)は、1つまたはそれ以上のテンプレート画像及びイメージコレクションで記録されているオブジェクト等をデスクトップ画面で検索します。
これは通常 、デスクトップ画面 の内容の検証(「オブジェクトが表示されていることを確認する」) 、後続のマウスやキーボードの操作 (「イメージ検索してClickまたはDrag」、「イメージ検索してPress/Type」 、など)に利用できます。
'search2'アルゴリズムは、古い世代であるイメージ検索方法('search')から以下が改善されました。
- 使いやすさ - アイコンなどの小さなデスクトップイメージの変更に対する許容範囲を制御する唯一のパラメータとして 'passrate' があります。
デフォルト値は50%に設定されており、デスクトップアプリケーションレベルなどの自動化が難しいと考えられる環境(Flashアプリケーションなど)を含むほとんどの環境で、信頼性の高い検索をすぐに実行できます。
- 高速なパフォーマンス - passrate
パラメータの 値が小さい場合でも検索が大幅に高速に動作し ます。 またアルゴリズムは画像ピクセルのコピーを避け、デスクトップバッファで直接動作するので、他の同様の方法よりも最大90%少ないメモリで動作します。
- 結果のソート - ベストマッチによる結果(マッチング位置)のデフォルトのソートでは、 passrate 値が低すぎて複数のファジーマッチが生成された場合でも、最初にマッチングする場所が常にレポートされます。 これにより、最初の一致(最も正しい可能性が高い)で作業し、他の類似マッチングオブジェクトを無視することができます。
- スケーリングされたイメージの検索 -
リリース4.0で導入された
scale
パラメータは、入力コンポーネントイメージのスケーリングされたインスタンスを検索します。 これにより、さまざまな解像度(Android、iOSなど)のデバイス間での単一の検索を再利用できます。
得られた一致座標の位置データは、 _SEARCH_
接頭辞付き変数の セットの形で呼び出しスクリプトに公開され ます。 このシステムは以前の 'search' メソッドと互換性があります。
メソッドが作成した変数
説明
_SEARCH_MATCH_COUNT = <number>
オブジェクト検索によって特定された一致するロケーションの数。
_SEARCH_X_ <n> = <X座標>
_SEARCH_Y_ <n> = <Y座標>
"n"が
1と_SEARCH_MATCH_COUNTの間にある n番目の一致位置のX、Y座標 。
_SEARCH_X = <X座標>
_SEARCH_Y = <Y座標>
最初の一致位置のX、Y座標(
_SEARCH_X_1および_SEARCH_Y_1の 同義語 )。
一致する場所の幅と高さを取得するには 、ホスティングコマンドまたはJavaメソッド呼び出しによって設定された _COMPARETO_TEMPLATE_WIDTH および_COMPARETO_TEMPLATE_HEIGHT変数を 使用します。
このメソッドは、透明/半透明のテンプレートイメージと"removebg"、
"bgcolor"、"minalpha"および"tolerance"の"search"
固有パラメータで は処理できません 。 この機能が必要な場合は、 代わりに「search」メソッドを使用してください。
v4.4以降、メソッドは一致する場所の数に制限を設定することができます。 これは、「最初のN回の出現を検出して停止する」などのシナリオをサポートすることを目的としています。この場合、完全なデスクトップ検索では一致が多すぎるか、時間がかかります。 スクリプトからの制限を設定するには 、Varコマンド を使用して _SEARCH2_MATCH_LIMIT 変数 を設定します 。 リセットするには、変数を空の値に設定します。 たとえば、値が1の場合、最初に一致する場所で検索が停止します。
//
Set the
match limit
to 1
Var
_SEARCH2_MATCH_LIMIT=1
Compareto
comp.png
method=search2
// Reset the match limit
Var _SEARCH2_MATCH_LIMIT=1
v6.1以降、パフォーマンスの問題を回避するために、一致する場所の最大数は内部で1,000に制限されていました。 制限は、メソッド設定の変更である可能性があります。
オプション
このメソッドは 、ホスティングコマンドまたはJavaメソッド呼び出しによって指定された 1つ以上の テンプレートイメージ または イメージコレクション を必要 とします。
文脈において 、「search2」 メソッドのパラメータ 'passrate'は テンプレート画像とスクリーンの対応する位置との間に必要な最小の類似性を特定します。 デフォルト値は50%で、ほとんどの場合、高いパフォーマンス/正確さを保証します。 低コントラストの環境など、あまりにも多くのマッチ画像がヒットする場合には合格率を高いレベルに設定します。 最高のパフォーマンスを得るには、合格率を100%に設定します。
'cmparea' を省略する場合、パラメータは、フルスクリーンオプションで、デフォルトです。
このメソッドは、次の2つの特定のパラメータをサポートしています。
sort=<best|none|top|bottom|left|right>
-
結果ソートモード(オプション)、次のいずれか:
- 'best' - 最もよく一致する場所(最も低い相違点を持つ最も一致する場所)で並べ替えます。 同じ差分値を持つ場所は、自然な読み上げ順序(左から右、上から下)でソートされます。 このモードは、パラメータが指定されていない場合のデフォルトモードです。
- "none"
- 結果を並べ替えたり、結果を自然な "読み取り"の順序(左から右、上から下)にしないでください。 このモードでは、従来の 「検索」 メソッド と同じ順序が生成され ます。
- "top"
- 上から下にソートします(一番上から順に)。
- "bottom"
- 下から上(下から上)にソートされます。
- "left"
- 左から右(左端)からソートします。
- "right"
- 右から左(最初の一番右)から順にソートします。
scale=<float_number(s)>
-
'scale'は、4.0以降でサポートされているオプションのパラメータです。 これは、入力画像のスケーリングされたインスタンスを検索することを可能にします。
値は、単一の浮動小数点数(倍率)またはセミコロン ';' 分割された数字のリストとなります。
より多くの数字がある場合、マッチが生成されるか、リストが使い果たされるまで、指定された順序で処理されます。
'scale'をオフに設定するには、値1を使用します。値がゼロより大きい場合は、スケール比として扱われます。 たとえば、2.0の値では、幅と高さが2倍に拡大されたコンポーネントを検索します。
動的スケーリングを使用するために指定できる2つの負の定数があります。 現在のデスクトップ解像度と、テンプレート(コンポーネント)イメージが作成されたデスクトップのサイズとの差に関して、入力イメージを拡大/縮小します。 Version 3.x以前はデスクトップの解像度をテンプレートのメタデータに保存しなかったため、この操作を可能にするには、画像をHeartCore Robo Desktop4.4で作成または更新する必要があります。
古いイメージを更新するには、元のデスクトップに接続するには、 プロジェクトビュー でテンプレートを右クリックし、[ イメージプロパティの更新 ]を選択します。
サポートされるスケールモードは次のとおりです。
戻り値
この方法は、少なくとも1つの一致する場所が入力されたテンプレート画像の少なくとも一方のために発見された場合、呼び出すコマンド(メソッド呼び出し)にリターン0(成功)を返します。 それ以外の場合は1の値を返します。
トラブルシューティング
失敗した "search2"
比較 を処理するには :
- スクリプトが検索に失敗した後に終了するように設計されている場合は、ロスレスフォーマット(PNGまたはBMP)でスクリーンショットを作成することをお勧めします。 そのようなコードの例を下の例に示します。 これにより
、ログインダイアログの 「スタティックイメージクライアント」 または
比較コマンド/メソッドコールプロパティウィンドウの「RDイメージをロード」ボタンを使用し てスクリーンショットを読み込んだ後、失敗した比較を再現してデバッグすることができます 。
- 画像の変化に対する許容範囲を広げるには、単に合格率を下げるだけです。 曖昧なレベルに設定することを恐れてはいけませんが
、正しいコンポーネントの場所が最初に報告されることをGUIの "比較"ボタン で 確認してください。
合格率を変更しても検索を修正することができない場合は、別のテンプレートイメージを作成し、それをテンプレートリストまたは イメージコレクションに 追加し ます。
- 比較の失敗を引き起こす最も一般的な要因については、「 イメージ比較の推奨事項 」の章を参照してください 。
- 明白な理由がない場合、検索が失敗した場合は、画像テンプレートとともにスクリーンショットを HeartCore Robo Desktopサポート に送付いただけると今後のサポートに役立てることができます。
Compareto buttonOk.png
method="search2"
passrate="90"
sort="bottom"
if ({_EXIT_CODE} > 0) {
Screenshot failure.png
desc="Failed
to find the OK button."
Exit
1
desc="Failed
to find the OK button."
}
else {
Mouse click to=x:{_SEARCH_X},y:{_SEARCH_Y}
}
- 一番下のOKボタンを検索してクリックします。 ボタンが見つからない場合は、スクリーンショットを終了し、終了コード1でスクリプトを終了します。
// Search for the buttons and click every
single one
Compareto
"button.png"
passrate="100" method="search2"
if ({_EXIT_CODE} == 0) {
for (i=1;
{i}<{_SEARCH_MATCH_COUNT}+1; i={i}+1) {
Mouse
click
to=x:{_SEARCH_X_{i}},y:{_SEARCH_Y_{i}} wait=1s
}
}
// Wait 15 seconds
for the buttons to disappear or change their state
Waitfor "mismatch" method="search2"
passrate="100" template="button.png"
timeout="15s"
if ({_EXIT_CODE} > 0) {
Exit
1
desc="Some buildings failed to turn the state!"
}
- 複数のボタンを画面で検索し、すべてのボタンをクリックします。 すべてのボタンが消えたり、状態が変わったら画面を確認してください。
// Find
the scroll button
Compareto
"scrollbutton.png"
method="search2"
if ({_EXIT_CODE} > 0) {
Exit
1
desc="Failed to locate the scroll button!"
}
// Save its
coordinates to the X, Y variables
Var X={_COMPARETO_CLICK_X}
Y={_COMPARETO_CLICK_Y}
// Iterate 100
loops
for (i=0; {i}<100; i={i}+1) {
//
Click the scroll button
Mouse
"click"
to="x:{_COMPARETO_CLICK_X},y:{_COMPARETO_CLICK_Y}"
//
Check if the component is visible on the screen. We use
Waitfor
//
because the page may take time to scroll and update on the
screen
Waitfor
match
template="component.png" method="search2"
timeout=3s
if ({_EXIT_CODE} == 0) {
//
Found -> break the for loop
break
}
//
Last loop #99 -> component not found, terminate the
script
if ({i} == 99) {
Exit
2
desc="Failed to scroll to the component!"
}
}
- スクロールされたページ(ウィンドウ)に表示されるコンポーネントを検索する方法の例。 この例では、スクロールダウンボタンをクリックしたまま、コンポーネントがループしているかどうかを確認しています。 スクロールボタンをクリックするタスクは、最終的にPgDownキーを押すことで置き換えられます。
4.2.2 イメージ検索('search')
説明
トップ^
イメージ検索 (コード 'search' )は、1つ以上のテンプレート画像又は イメージコレクション を元にコンポーネントやオブジェクトをデスクトップ画面から検索します。 これは通常 、デスクトップ画面 の内容の確認(「オブジェクトが表示されていることを確認する」) 、後続のマウスやキーボードの操作 (クリックまたはドラッグ、プレス 、ホイールなど)を行います。
この方法では、3つの独立した公差のメカニズムを持つプレーンピクセル比較を使用します。
- ピクセルベースの公差
は、アルゴリズムがテンプレート画像とは多少異なるピクセル量の差を持ったオブジェクトを探索するようにします。 これは 、合致するのに必要なピクセルのパーセンテージを'passrate' パラメータ によって設定します。 テンプレートイメージのサイズがたとえば10x10(100ピクセル)で、通過率を99%に指定した場合、アルゴリズムは最大1つの異なるピクセルを持つすべての一致する場所を検索します。 指定した通過率が低いほど、パフォーマンスが低下し、検索にかかる時間が長くなることに注意してください。
- RGB許容差 がv2.2で導入されました。
許容差を "tolerance" パラメータ0〜256の整数で設定します。
デスクトップピクセルの赤、緑、青の成分が、対応するテンプレートピクセルと同等であるとみなすために最大でどのくらい異なるかを示します。
この値は、例えば画像を背景とぼかしたり合成したりするなどして、ピクセルがわずかに変化する画像を扱うことを可能にします。
このような動作は、アプリケーションが更新されるときに装飾的なテキストや一部の画像が一定の方法でレンダリングされないFlashアプリケーションで報告されています。
許容値が高いほど、誤一致検出の可能性が高くなることに注意してください。 ほとんどのシナリオでは、値はぼかしレベルに応じて[0、100]の範囲内にある必要があります。
- 透明度/半透明度に基づく許容差 により、テンプレート画像の特定のピクセルを無視することができます。 画像検索アルゴリズムは、最小Alphaパラメータ( minalpha)で 指定された半透明成分のAlpha値を下回る透明または半透明(部分的に透明)のピクセルをすべて "合格"としてカウントします 。 たとえば、100ピクセルのテンプレートに90の透明ピクセルが含まれ、最小のアルファが0xFFに設定されている場合(完全に不透明なピクセルのみを検索する場合)、残りの10ピクセルはデスクトップイメージと比較されます。
透明性は、背景やコンポーネントの色の変化に対して堅牢な画像比較を構築する強力な方法です。 たとえば、リモートデスクトップでレンダリングされたアイコンを検索する場合、アイコンテンプレートの背景色のピクセルを透明にすると、リモートデスクトップの色の変化に関係なく、イメージの比較が確実に行われます。 テンプレート画像は、重要でないピクセルを取り除き、検索されたオブジェクトの骨格だけを残すために、一般的な画像エディタで編集することができる。 これは、地理情報システム(GIS)など、不安定なオブジェクトレンダリングを伴う特定のタイプのアプリケーションをテストする唯一の方法です。
HeartCore Robo Desktopバージョン2.1以降では
、removebgおよびbgcolorパラメータを使用 して バックグラウンドの自動透過 を サポートしてい ます。 サードパーティのエディタで画像を編集することなくテンプレート画像の背景を無視することができます。 このアルゴリズムは、入力上に不透明なテンプレート画像(透明度のない画像を意味する)を受け入れ、内部透明フィルタを適用して、背景に等しいかまたは似ているすべてのピクセルを除去します。
背景色のデフォルトは最初のテンプレート画像ピクセルですが、bgcolor
パラメータで 明示的に指定することもできます。 自動透過性(Automatic transparency)はGUIを通して、特に テンプレートイメージエディター と CompareToウィンドウ に記述されている比較GUIコンポーネントです。
サードパーティーの画像エディタなどを使用して、テンプレート画像に透明性を導入することもできます。
たとえば、WindowsとLinux / Unixのユーザーは、Gimpを利用して以下のように透明度を設定することができます:
- Gimpでテンプレート画像を開く
- 「レイヤー」→「透明」→「カラーからアルファ」を選択し ます。
- 透明な色を選択します。 これは通常、Gimp(白い背景色)によって提供されるデフォルト値のままにしておくと問題なく動作します。
- テンプレートイメージをファイルに保存します。
- テンプレートイメージエディタで再テストし ます。 画像に背景色に非常に近い色しか含まれていない場合、Gimpはすべてのピクセルを透明または半透明にして、テンプレートをデフォルトの minalpha
値 で画像検索に使用できなくする可能性があるため です。 テンプレート画像エディタは、そのようなケースを検出し、画像検索パラメータの変更を提案することができます。
結果として得られるマッチ位置の座標は、 _SEARCH_
接頭辞付き変数セットの形で呼び出しスクリプトに公開され ます。
メソッドが作成した変数
説明
_SEARCH_MATCH_COUNT=<数値>
オブジェクト検索によって特定された一致するロケーションの数。
_SEARCH_X_ <n>=<X座標>
_SEARCH_Y_ <n>=<Y座標>
"n"が
1と_SEARCH_MATCH_COUNTの間にある n番目の一致位置のX、Y座標 。
_SEARCH_X=<X座標>
_SEARCH_Y =<Y座標>
最初の一致位置のX、Y座標(
_SEARCH_X_1および_SEARCH_Y_1の 同義語 )。
一致する場所の幅と高さを取得するには 、ホストコマンドまたはJavaメソッド呼び出しによって設定された _COMPARETO_TEMPLATE_WIDTH および_COMPARETO_TEMPLATE_HEIGHT変数を使用します。
一致位置の数はComparetoコマンド設定のパラメータによって制限され、最大値に達すると検索が停止することに注意してください。
オプション
このメソッドは 、hostingコマンドまたはJavaメソッド呼び出しによって指定された 1つ以上の テンプレートイメージ および/または イメージコレクション を必要 とします。 "passrate" のパラメータは
、テンプレート画像とスクリーンマッチ位置との間で正確に一致しなければならないピクセルの最小比率を 'search' メソッドのルールで指定します 。 デフォルト値は100%です(ピクセル差分は許容されません)。 "cmparea"
を省略する場合、パラメータは、フルスクリーンがデフォルトです。
サポートされている特定のパラメータ:
tolerance=<0-255>
-
tolerance パラメータは、 RGB公差 をコントロールし、色の変化許容値を 0〜255の整数で設定します。
ここで、0は許容差(完全一致)を表し、255は最大許容値を表します。
これは、デスクトップピクセルの赤、緑、青の成分が、対応するテンプレートピクセルと同等であるとみなすために最大でどのくらい異なるかを示します。
高い許容値は、誤った一致検出の確率を上げていきます。
このパラメータは、例えば画像を背景とぼかしたり合成したりすることによって、画素がわずかに変化する画像を扱うことを可能にします。
このような動作は、装飾的なテキストや一部の画像でさえも一定の時間内にレンダリングされないFlashアプリケーションで報告されています。
ほとんどのシナリオでは、値はぼかしレベルに応じて[0、100]の範囲内にある必要があります。 パラメータを指定しない場合、デフォルトは0になり、アルゴリズムは正確なカラーマッチを使用してピクセルを比較します。
removebg=<true | false>
removebg のパラメータは、 バックグラウンドでの自動透明度を (オン "true" )または(オフ "false" )で設定します。 "true" の値は 、テンプレート画像の背景色を無視するための自動透過を適用します。 テンプレート画像(またはテンプレート画像)に既に透明または半透明のピクセルが含まれている場合、背景フィルタは適用されず、このパラメータおよび bgcolor は無視されます。 デフォルト値は "false" (バックグラウンドフィルタはオフ)です。
bgcolor=<HTMLColor>
bgcolor パラメータはオプションです。
自動透明化するためにバックグラウンドのカスタム背景色を定義することができます。
removebg のパラメーターでは、白の場合は "ffffff"、黒の場合は "000000"のように、HTMLのような記法でRGBを受け入れます。
値は6文字でなければならず、各R、G、B成分は2桁の16進数(00〜ff)の形式で指定されていなければなりません。
bgcolor が指定されていない場合、最初のテンプレート画像ピクセル(左上の画像コーナー)から背景色を選択します。
minalpha
minalpha パラメータは、半透明の許容範囲を設定します。
これは、 既存の透明または半透明のピクセルを持つテンプレートだけでなく 、 removebg フィルタ によってフィルタリングされた画像にも適用できます 。
デフォルト値255は、完全に不透明なピクセルだけを比較し、すべての透明または半透明の(半透明の)ピクセルを無視するよう検索アルゴリズムに指示します。
値が255より小さい場合は、アルファ成分が指定されたリミット以上の半透明ピクセルでもアルゴリズムが比較されます。
最小のアルファパラメータは、バックグラウンドカラーフィルタがあまりにも多くのピクセルを作成するか、またはそれらのすべてを透明または半透明にする状況を解決するためのものです。
これにより、検索アルゴリズムは少数の不透明ピクセルと比較され、通常はヒットしない一致結果につながります。
アルファ限界を下げると、比較可能なピクセル数が増えるので、画像検索アルゴリズムの一致度を向上させるために使用することができます。
ただし、半透明ピクセルの比較は色の類似性に基づいているため、従来の画像検索よりも大幅にパフォーマンスが低下し、最小値が極端に低いと予期しない一致結果が生じる可能性があることに注意してください。
戻り値
テンプレート画像の少なくとも1つの一致する場所が入力された場合に呼び出したコマンド(メソッド呼び出し)内の変数へ0(成功)を返します。 それ以外の場合は1の値を返します。
トラブルシューティング
失敗した “search” の結果を処理するには :
- スクリプトが検索に失敗した後に終了するように設計されている場合は、ロスレスフォーマット(PNGまたはBMP)でスクリーンショットを作成することをお勧めします。
そのようなコードの例を下の例に示します。 これにより
、ログインダイアログの 「スタティックイメージクライアント」 または
searchコマンド/メソッドのコールプロパティウィンドウの「RDイメージをロード」ボタンを使用してスクリーンショットを読み込んだ後、失敗した比較を再現してデバッグすることができます。
- 合格するまで合格率を下げるか、RGB許容差パラメータ( 「許容差」 )を上げて 「比較」ボタンを押し てテストし ます。
パラメータが検索結果を修正できないようであれば、代替テンプレートイメージを作成しそれをテンプレートリストまたは イメージコレクションに 追加し ます。
- 比較の失敗を引き起こす最も一般的な要因については、「 画像比較の推奨事項 」の章を参照してください 。
- 明白な理由がない場合、検索が失敗した場合は、画像テンプレートとともにスクリーンショットをHeartCoreRobo Desktopサポートに送付いただけると助かります。
使用例
Compareto buttonOk.png
method="search"
tolerance="50"
if ({_EXIT_CODE} > 0) {
Screenshot failure.png
desc="Failed
to find the OK button."
Exit
1
desc="Failed
to find the OK button."
}
else {
Mouse click to=x:{_SEARCH_X},y:{_SEARCH_Y}
}
- [OK]ボタンを検索してクリックします。 ボタンが見つからない場合は、スクリーンショットを終了し、終了コード1でスクリプトを終了します。
より多くの コンポーネント検索の例 については、'search2'メソッドの仕様を参照してください 。
4.2.3オブジェクト検索(「オブジェクト」)
説明
トップ^
オブジェクト検索 (コード 'object' )は、特定のRGBの範囲内の特定の色または色のオブジェクトを配置します。 また、最終的なオブジェクトの回転を検出して、オプションのテンプレートイメージでオブジェクトリストをフィルタリングすることもできます。 このメソッドは 、「画面に特定の色が含まれているかどうかをテストする」、「画面上のすべての赤いオブジェクトを見つける」、「画面上の回転したすべての黒い三角形やその他の形を見つける」などの 単純な画像解析 タスク を処理するように設計されています 。
メソッドは常に可能な限り大きなオブジェクトを探し出し、他のオブジェクトが含まれているかどうかを再帰的に検索しないため、このアプローチはフレーム化、オーバーレイ化、マージされた古典的なGUIコンポーネントには適していません。 しかしながら、この方法は 、例えば、地理情報システム(GIS)アプリケーションによって生成された低カラーシーン の スキーム、マップ および画像の テストにおいて非常に良好に 機能し、
単純な画像データを生成するシステムです。
この方法は、例えば、「この特定の領域に赤いメッセージがありますか?」などの質問に答えるために、特定の色または色範囲のオブジェクトが画面上に存在するかどうかをチェックするためにも使用できます。
アルゴリズムはまず、入力カラー基準を満たす最初のピクセルの画像をスキャンします。 次に、そのようなオブジェクトのそれぞれの外形に沿って、その境界矩形を変数のセットの形でコンテキストに格納します。
メソッドが作成した変数
説明
_OBJECT_COUNT = <数値>
オブジェクト検索によって識別されたオブジェクトの数。
_OBJECT_X_ <n> = <X座標>
_OBJECT_Y_ <n> = <Y座標>
_OBJECT_W_ <n> = <幅>
_OBJECT_H_ <n> = <高さ>
_OBJECT_COUNT"<n>"の変数中でn番目のオブジェクト間にあるX、Y座標と幅と高さ 。
_OBJECT_X_ <n> = <X座標>
_OBJECT_Y_ <n> = <Y座標>
_OBJECT_COUNT"<n>"の変数中でn番目のオブジェクト中心のX、Y座標 。
3.4以降でサポートされています。
オブジェクトをより正確に記述する オリジナルのシェイプ( java.awt.Shape インスタンス)は、 getContext()、getObjectSearchShapes()
メソッドを 使用してJavaテストスクリプトだけで使用できます 。
オプション
このメソッドは、オプションで 、ホスティングコマンドまたはJavaメソッド呼び出しによって指定された 1つの テンプレートイメージ を受け入れます。
"passrate" パラメータは、唯一の役割を果たし 、'object' メソッドは、テンプレート画像と呼ばれます。
画像は、任意の回転レベルで指定された色(色範囲)のちょうど1つの形状を含まなければいけません。
color "パラメータ によって識別されるオブジェクトのリストは 、 passrate パラメータ によって指定された比率まで、テンプレートイメージの形に似ている形だけを残すようにフィルタリングされます。
もし "rotations" パラメータも指定されていて1より大きい場合、指定された回数回転したテンプレートシェイプのリストに対しオブジェクトリストが一致します。
テンプレートイメージが指定されていない場合、メソッドは、 passrate 値に関係なく、指定されたcolorおよびsizeパラメータに一致するすべてのオブジェクトを探します。
"cmparea" パラメータはオプションで省略された場合はデフォルトでフルスクリーンになります。
サポートされている特定のパラメータ:
color=<HTMLColor>
color パラメータは、(黒い「FFFFFF」、白色が「000000」である)HTML形式の6文字RGB16進数形式でオブジェクトの色を定義します。 パラメータを指定しないと、デフォルトで黒になります。
tolerance=<0-255>
"tolerance" パラメータは、RGB許容差(RGBtolerance)と同様であり、0と255の間の任意の整数を指定する、 イメージ検索 方法です。
これは、ピクセルの赤、緑、青成分を色指定したオブジェクトの色に相当するオブジェクトが最大で異なる可能性がどの程度かを示す 色 パラメータです。
このパラメータは、事実上、オブジェクトの色が単色ではなく色の範囲にあることを指定することができます。 また、孤立した色ではなく、むしろ類似した色で形が形成されていないぼやけた画像にも役立ちます。 許容値が高いほど、誤った形状検出の可能性が高くなります。 ほとんどのシナリオでは、値はぼかしレベルに応じて[0、100]の範囲内にある必要があります。 パラメータを指定しない場合、デフォルトで0になり、アルゴリズムは単色オブジェクトのみを検索します。
bridgecolors = <HTMLColor1; HTMLColor2; ... HTMLColorN>
bridgecolorsの パラメータはオプションです。
追加許容色をセミコロンで区切りリストを作成できます。
これにより、既知の色の他のオブジェクトが描画されると予想される連続オブジェクトを検索することができます。
これらの色は常に完全一致を使用して比較され、 "tolerance"パラメータでは機能しません 。
rotations=<1-360>
オプションの rotation
パラメータは、テンプレートイメージが提供されている場合にのみ意味を持ちます。
回転粒度を定義します。
基本的には、オブジェクトのフィルタリングの目的でテンプレートオブジェクトを何回回転させるかを指定します。 たとえば、値が36の場合、シェイプは10度ステップで回転します。
、回転数が多いと、回転した物体の認識精度は向上しますが、認識スピードは低下します。
回転数が低い場合は、 "passrate" パラメータ を低下させることによってフォローできます。
このアプローチは、パフォーマンスに関して幾分優れていますが、テンプレートに似たオブジェクトを誤って検出するリスクが高くなります。
min=w:<width>;h:<height>
結果のオブジェクトをフィルタリングするためのオプションの最小サイズ(幅および/または高さ)。 パラメータでは、幅と高さをセミコロン(たとえば "w:100;h:100")
または次元のうちの1つ( "h:100")で区切って指定できます。
max=w:<width>;h:<height>
結果のオブジェクトをフィルタリングするオプションの最大サイズ(幅および/または高さ)。 パラメータでは、幅と高さをセミコロン(たとえば "w:100;h:100")または次元のうちの1つ( "h:100")で区切って指定できます。
overlapmode=<true|false>
オプションの overlapmode フラグは、画面上のオブジェクトがオーバーラップする(競合する)かどうかを定義します。 パラメータ値が "true"の場合
、メソッドは部分的に重なったオブジェクトを探すためにより多くのスキャンを続けます。
draw=<true|false>
draw パラメータは、HeartCore Roboのデスクトップビュー上にあるオブジェクトのハイライト表示を可能にオプションのフラグです。 パラメータが 「true」の場合 、アルゴリズムはデスクトップビューアのGUIコンポーネントのデスクトップイメージ上にオブジェクト矩形を描画します。 これは、デバッグやデモンストレーションの目的に役立ちます。 これらの図は、スクリプトが終了したときにリセット(削除)されるか、または 「clear = true」の パラメータが指定された別のオブジェクト検索 が実行されます。
clear=<true|false>
戻り値
このメソッドは、指定された条件を満たすオブジェクトが少なくとも1つ見つかった場合に、呼び出しコマンド(メソッド呼び出し)へ0(成功)を返します。 それ以外の場合は1の値を返します。
トラブルシューティング
失敗した 'object'の 比較 を処理するには :
- スクリプトが検索に失敗した後に終了するように設計されている場合は、ロスレスフォーマット(PNGまたはBMP)でスクリーンショットを作成することをお勧めします。 そのようなコードの例を下の例に示します。 これにより
、ログインダイアログの 「スタティックイメージクライアント」 または
比較コマンド/メソッドコールプロパティウィンドウの「RDイメージをロード」ボタンを使用し てスクリーンショットを読み込んだ後、失敗した比較を再現してデバッグすることができます 。
- 合格 が得られるまで 、合格率を下げるか、RGB許容差パラメータ( 'tolerance' )を上げて 「比較」ボタンを押してテストします。
パラメータが壊れた検索を修正できないようであれば、代替テンプレートイメージを作成し、それをテンプレートリストまたは イメージコレクションに 追加し ます。
- 比較の失敗を引き起こす最も一般的な要因については、「 画像比較の推奨事項 」の章を 参照してください 。
- 明白な理由がない場合、検索が失敗した場合は、画像テンプレートとともにスクリーンショットを HeartCore Robo Desktopサポートにご連絡いただけると幸いです 。
4.3 テキスト認識方法
4.3.1 Tesseract-OCR(「tocr」)
説明
トップ^
Tesseract-OCRメソッド(コード "tocr" )を使用すると、外部の Tesseract-OCR エンジンバージョン2以降 を呼び出して 、リモートデスクトップイメージからテキストを抽出することができます。 この方法を使用する前に、クライアントシステム(つまり、HeartCore Roboを実行しているシステム)にTesseractをインストールして設定する必要があります。
- Tesseractをダウンロードしてインストールします( 手順 )。
- Windowsの場合は 、言語ファイルもインストールする tesseract-ocr-setup-3.05.01.exe 以降のリリースを使用することを強くお勧めします。
また、 tesseract-ocr-setup-4.00.00dev.exe インストーラでは機能性についてテストしましたが、全体的な精度については テストできていません。
4.0.0-betaとマークされた新しいビルドは正しく構成されておらず、手動で修正する必要があります。
- HeartCore Roboは、デフォルトで
tesseract
バイナリがシステムパス上にあると推定し設定します。
そうでない場合は、どこにファイルがあるかを指定してください。
HeartCore Robo Desktopで編集->プリファレンスウィンドウを開き、Tesseract-OCR画面を選択します。
コマンドテンプレートを 'tesseract'バイナリの絶対パスで更新します。
たとえば、TesseractをC:\Program Files\Tesseract
フォルダにインストールした場合は 、コマンドテンプレートを次の場所に更新します。
"C:\Program Files
(x86)\Tesseract-OCR\tesseract.exe" $1 $2 $3 $4
- インストールされたTesseract-OCRの統合をテストするには、テストスクリプトエディタが開いている状態でスクリプト->Compareto
コマンドプロパティウィンドウを開きます。比較メソッドのドロップダウン で "tocr"を選択し 、ウィンドウにTesseractがあるかどうかを確認させます。
- スクリプトやコマンドの実行中にTesseractが正しく実行されないと、
_TOCR_ERROR
スクリプト変数に値が設定されます(下記参照)。
統合は、Tesseractコマンドラインインターフェイス(CLI)とローカルファイルシステムに基づいています。
このメソッドは、実行されると、 cmparea
パラメータを使用して 指定されたデスクトップイメージまたはその矩形部分を抽出します。
画像は拡大され(スケールアップされ)、精度が向上し、8ビットの白黒フォーマットでシステムの一時パスに保存されます。
この方法では、イメージファイルを引数としてCLIを使用してTesseractを起動します。
エンジンは、OCRを実行し、認識されたテキストを一時的な経路のテキストファイルに格納し、その後、この方法によって解析され、
text (平文検索)、 text および 許容範囲
(許容テキスト検索)または パターン (正規表現マッチング)パラメータを使用します。
正規表現のマッチングが 指定されたテキストと一致する java.util.regex.Pattern
準拠の正規表現を記入してください。
バージョン4.1.3までは、式は テキスト全体 と一致しなければならず、部分一致の文字列検索は行われません。
バージョン4.1.4は、一致する場所のテキストの検索をサポートし、テキストを返し、 textパラメータ と同じ方法で座標を返し ます。
レーベンシュタイン距離 は トレラント(ファジー)テキスト検索 に基づいています。
これは、1つの文字列を他の文字列に変換するために必要な編集の最小数として定義され、許容可能な編集操作は1文字の挿入、削除、または置換です。
このメトリックは 、“text”フィールドで提供されるサンプルテキストを考慮するために、いくつの文字が省略されるか、または最大で正しく認識されないかを指定する整数である distance パラメータ によって使用可能になり ます。
パラメータ同等。 正規表現とは異なり、許容マッチングは、指定されたテキストと距離に一致する文字列の出現を認識したテキストを常に検索します。 文字列の前後に別のテキストを指定する必要はありません。
このメソッドは、OCR結果を_TOCR_接頭辞付き変数のセットに次のように格納します。
変数名
説明
_TOCR_ERROR = <エラーテキスト>
Tesseractがインストールされていないか、誤って設定 されているときにスローされるエラーテキストを含みます。
詳細については、 トラブルシューティング の段落を参照してください 。
_TOCR_TEXT = <テキスト>
認識されたテキスト(すべての行が改行文字で区切られます)。
_TOCR_TEXT_X = <X座標>
_TOCR_TEXT_Y = <Y座標>
_TOCR_TEXT_W = <幅>
_TOCR_TEXT_H = <高さ>
認識されたテキストの境界矩形(3.4以降)。
_TOCR_LINE_COUNT = <数値>
認識されたテキスト行(行)の数。
_TOCR_LINE <n> = <lineText>
<n>が1〜_TOCR_LINE_COUNTのn行目のテキスト。
_TOCR_LINE_X_ <n> = <X座標>
_TOCR_LINE_Y_ <n> = <Y座標>
_TOCR_LINE_W_ <n> = <幅>
_TOCR_LINE_H_ <n> = <高さ>
n番目の線の境界矩形(3.4以降)。
指定された文字列の認識されたテキストを検索 するために text
または pattern パラメータが指定されると、このメソッドは結果変数を次のように作成します。
変数名
説明
_TOCR_MATCH_COUNT = <数値>
パターン
式または text と distance
(指定されている場合)パラメータ と 一致する、認識されたテキスト内のロケーション(文字列)の数 。
_TOCR_MATCH = <matchingString>
最初に一致する文字列。 distanceが 0に設定されているか、設定されていない
場合は変数の値に textが 使用され、変数にtextパラメータの値が代入されます。
_TOCR_MATCH_ <n> = <matchingString>
<n>が1〜_TOCR_MATCH_COUNTのn番目の一致する文字列。
場合 distanceが 0に設定されているか、指定されていない場合
textが パラメータが使用され、変数に text の値が含まれます(3.5以降)。
_TOCR_MATCH_INDEX=<index>
認識されたテキスト内の最初の一致インデックス(位置)が代入されます。
索引付けは、認識されたテキストの開始を示す 0 で始まります。
_TOCR_MATCH_INDEX_ <n> =<index>
<n>が1〜_TOCR_MATCH_COUNTのn番目の一致インデックス。
索引付けは、認識されたテキストの開始を示す0から始まります(3.5以降)。
_TOCR_MATCH_X =<X座標>
_TOCR_MATCH_Y=<Y座標>
_TOCR_MATCH_W=<幅>
_TOCR_MATCH_H=<高さ>
最初の一致する文字列の境界矩形(3.4以降)。
_TOCR_MATCH_H_ <n>=<X座標>
_TOCR_MATCH_Y_ <n>=<Y座標>
_TOCR_MATCH_W_ <n>=<幅>
_TOCR_MATCH_H_ <n>=<高さ>
1〜_TOCR_MATCH_COUNT<n>でのn番目に一致する文字列の境界矩形 。
_TOCR_MATCH_CLICK_X =<X座標>
_TOCR_MATCH_CLICK_Y =<Y座標>
最初の一致する文字列の中心座標(3.4以降)。
次のようなタスクに使用することができる
「OCRを使用して文字列を検索し、それをクリックしてください」 。
典型的な例:
バージョン4.1以降では、上記のコードブロックの代わり にClickコマンドを使用することをお勧めします :
Compareto
method="tocr"
cmparea="x:33,y:2,w:200,h:22" text="Cancel"
if ({_EXIT_CODE} > 0) {
Exit
1
} else {
Mouse click to=x:{_TOCR_MATCH_CLICK_X},y:{
_TOCR_MATCH_CLICK
_Y}
}
Click
ocr cmparea="x:33,y:2,w:200,h:22"
text="Cancel"
_TOCR_MATCH_CLICK_X_<n>=<X座標>
_TOCR_MATCH_CLICK_Y_ <n>=<Y座標>
_TOCR_MATCH_COUNT<n>での1〜n番目の一致する文字列の中心座標 。
オプション
このメソッドはテンプレートイメージを受け付けません。
"passrate" パラメータは 、Tesseract-OCRのコンテキストでは適用されず無視されます。
"cmparea" パラメータは省略可能で、省略時にはデフォルトでフルスクリーンになります。
サポートされている特定のパラメータ:
language=<3-charLanguageCode>
'language' パラメータはTesseract言語データファイルの有効な3文字言語コードを設定できます。 日本語は"jpn"です。
パラメータを省略すると、デフォルトで "eng" (英語)になります。
scale=<scaleFactor>
'scale' パラメータは、
それがTesseractに渡される前にデスクトップの画像を内部で拡大表示するように倍数で定義します。
スケーリングは精度に影響する可能性があります。 詳細については、 トラブルシューティングの段落を参照してください 。
スケール値には、1.5,2,3などの任意の浮動小数点数を指定できます。
大きな値を指定するとメモリ要件が大幅に増加し、HeartCore Roboのメモリが不足する可能性があります(OutOfMemoryError)。
デフォルトの倍率は2です。
text=<textToSearchFor>
textは認識されたテキストを検索するためのオプション。
OCRが正しく実行されたときホスティングコマンドには、0が返されます。
と 認識されたテキストがそうでない場合は、指定された文字列または1を返します。
テキスト位置のインデックスおよびスクリーン座標は、 _TOCRスクリプト変数 に格納され、 さらに処理される可能性があります。 このパラメータは、 パターン 1と一緒に使用することはできません 。
distance=<0-[textLength]>
pattern=<正規表現>
java.util.regex.Pattern
準拠正規表現で認識されたテキストをテストする(オプション)
。 このパラメータは、 text と一緒に使用することはできません 。
- バージョン4.1.3までは、式は テキスト全体と 一致する必要があります(一致する部分文字列の検索は実行されません)。
- バージョン4.1.4以降、textパラメータと同じ方法で一致する場所を検索 します。
一致するテキスト位置のインデックスおよびスクリーン座標は、_TOCRスクリプト変数に格納され、さらに処理される可能性があります。
この機能強化により、1つの「Click ocr」コマンド 内で「一致するテキストの場所を見つけてクリックする」などのアクションを作成できます 。
mode=<modeNumber>
オプションの認識モード(3.5以降でサポート)。
より良い結果を得るためにエンジンの動作を変更することができます。
サポートされているモードは次のとおりです。
- デフォルトのTesseractモード (コード "1")。 これはOSDなしの自動ページ分割(
"-psm 3"
CLIスイッチ) のTesseractのデフォルトモードです。
この値は、3.5より前のリリースのHeartCore Roboと互換性があります。
- 高精度 (コード "2")。 これは、スクリーン上のテキストをラインに分割し、ラインモードで個別にOCRを再適用するHeartCore Roboの機能強化です(
-psm 7
)。 このアプローチは数倍も遅くなりますが、特にOCRがアプリケーションウィンドウなどの小さな画面領域に適用される場合は、より正確な結果が得られます。
- 画像を1つの単語 (コード "8")として扱います。
認識されたテキストの長さが最大3文字の場合にこのモードを使用します。
これは、Tesseractのネイティブモードで、
"-psm 8"
CLIスイッチを介して実行され ます。
HeartCore Roboバージョン4.0.1以降では、以下の追加モードがサポートされています。
-
"-psm 4"
Tesseract CLIスイッチに
対応する可変サイズのテキスト(コード "4")の単一列を想定します。
-
"-psm 5"
Tesseract CLIスイッチに 対応する、垂直に整列されたテキスト(コード "5")の単一の均一ブロックを仮定する
。
-
"-psm 6"
Tesseract CLIスイッチに 対応する単一の統一テキストブロック(コード "6")を仮定します。
- イメージを
"-psm 7"
Tesseract CLIスイッチに
対応する単一のテキスト行(コード "7")として扱います。
- 画像を
"-psm 9"
Tesseract CLIスイッチに 対応する円(コード "9")内の単一の単語として扱います。
- 画像を
"-psm 10"
Tesseract CLIスイッチに 対応する1文字(コード "10")として扱います。
filter=<filterNumber>
オプションの画像フィルタ(3.5以降)。 OCRの精度を向上させるために、スクリーン上の特定のアーチファクトを除去します。 フィルタは、ターゲットスクリーンまたはその部分が、標準のソリッドな灰色または白のボタン、ドロップダウン、およびその他のコンポーネントを持つアプリケーションウィンドウなどの、長方形のソリッドカラーエリアに濃い色のテキストを含む場合に選択的に適用する必要があります。 白や明るい色のテキストや、画像や写真などの豊かな色のグラフィックは、フィルタリングには適していません。 このような場面でフィルタを使用すると、テキストが損傷し、OCR精度が低下する可能性があります。
fontsize = <fontSize>
認識されたテキストのおよそのフォントサイズ(3.5以降)。 デフォルト値は15です。イメージフィルタがオンの場合にのみ使用されます。 これは、フォントサイズ以下のアーティファクトを除去しないようにフィルタに指示します。 値が実際のフォントサイズよりもはるかに小さい場合、フィルタによって文字の一部が無効になることがあります。 値が大きすぎると、フィルタは特定のアーティファクト(コンポーネント)を画面から削除しないため、精度が低下する可能性があります。
戻り値
この方法では、OCRが誤った構成やI/Oエラーによってエラーを発生した場合に、hostingコマンドを1に戻します。 これは、Tesseractがまったくインストールされていない場合や、設定されたコマンドテンプレートがTesseractバイナリを指していない場合、または
呼び出したスクリプトによって指定された オプションの 言語 パラメータが正しくインストールされたTesseract言語データファイルと一致しない場合に適用されます。 エラーのテキストは、 _TOCR_ERROR
変数 を通じて使用可能になり ます。 この変数 の 存在 を テストする
ことは、テストスクリプトでコアのOCRエラーを検出する方法です。
そうでない場合、戻りコードは入力パラメーターに依存します。 結果のテストを行わずにOCRだけを実行するメソッドが呼び出された場合、テキストが認識されなくても常に0が返されます。 メソッドが "text" または "pattern" のパラメータで呼び出された 場合、認識されたテキストが指定された文字列/正規表現と一致する場合は0を返し、そうでない場合は1を返します。
トラブルシューティング
Tesseract-OCRが正しくインストールされ、設定されているかどうかをテストするには、「比較」ボタンを使って「tocr」認識を実行します。 Tesseractによってスローされたエラーを表示します。 最も一般的なエラーは次のとおりです。
- Tesseractはまったくインストールされていません。
- Tesseractはインストールされていますが、システムパスにはありません。 この場合は、PreferencesウィンドウでTesseract-OCR設定パネルを探し、コマンドテンプレートを "tesseract"バイナリへのフルパスで更新する必要があります。
- Tesseractはインストールされ、構成されていますが、言語データファイルがないか、 言語
パラメータで 指定されたファイルがありません 。 この場合、言語ファイルをダウンロードし、Tesseractが必要とするフォルダに保存する必要があります。
Tesseractの認識能力は、最も一般的なフォントと言語に限定されているため、HeartCore Robo Desktopは、特定のテスト環境に対する正確性および互換性を保証しません。
Tesseractエンジンは、最終的に特定のフォントや言語設定のために "訓練させる"ことができます。
これらのステップは、 Tesseractのドキュメント に記載されています。
精度はHeartCore Robo側で次の2つのパラメータによってのみ制御できます。
- cmparea パラメータを使用し て認識を特定の画面領域に限定することで、精度が大幅に向上します。 デスクトップ画面全体で認識が行われると、エンジンが見つからない場所であってもテキストが見つかることが多いようです。
これは、多くのエラーで予期しない結果につながります。
- エンジンには1-2文字からなるスタンドアロンの文字列を認識できないようですが、長い文字列(3文字以上)には使用してください。
- 2.5や3のような "scope" パラメータの値が高いほど、例えばフォントが非常に小さい場合など、精度が若干向上する可能性があります。
使用例
Var _TOCR_LINE_COUNT=0
Compareto method="tocr" cmparea="x:33,y:2,w:200,h:22"
for (i=1; {i}<{_TOCR_LINE_COUNT}+1; i={i}+1) {
Typeline
"{_TOCR_LINE{i}}"
}
- 指定したデスクトップ領域のテキストを認識し、デスクトップに入力します。
Compareto method="tocr" cmparea="x:33,y:2,w:200,h:22"
pattern="[aA]pplication"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- 認識されたテキストが'アプリケーション'または 'アプリケーション'の単語と一致 しない場合は、スクリプトを終了します 。
Compareto method="tocr" cmparea="x:33,y:2,w:200,h:22"
pattern=".*[aA]pplication.*"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- 認識されたテキストに
'Application'または 'application' が含まれていない場合にスクリプトを終了するように変更された前述の例 。
Compareto method="tocr" cmparea="x:33,y:2,w:200,h:22"
text="apple" distance="2"
- 画面上のテキストを認識し、それが好きであるかどうか、および/または 'apple'のような文字列が含まれているかどうかを確認します。
- OCRが 'There are a apple'のようなテキストを認識すると 、正確に一致するものが見つかるため、 コマンドは 成功 (終了コード0) を報告し ます。
- OCRが 'There are a Apple'のようなテキストを認識 すると、2の許容距離内にある1文字(A→a)の代わりに 'Apple'という単語を 'apple'に変更できるため 、コマンドは 成功 を報告し ます。
- OCRのようなテキスト認識する場合は 「APPLEがある」と 、コマンドが報告され 、成功を 単語「APPLSは」(1)置換の二つの操作で「りんご」に変更することができますので、(A-> a)と(2)加算(+ e)または置換(s→e)であり、これはまだ許容距離2以内である。
- OCRが 'There are Doppler'の ようなテキストを認識した場合、 単語 'Doppler'に1回の置換(o-> a)の後で 'apple'と一致するシーケンスが含まれているため 、コマンドは 成功 を報告し ます。
- 'Appisがあります'のようなテキストをOCRが認識 すると、 'Appis'という単語に少なくとも3つの操作(A-> a、i-> l、s-> e)が必要なため 、コマンドは 失敗 (終了コード1) 2の許容距離以上の「Apple」になります。
テキストが一致すると、テキスト内の一致位置のインデックスが _TOCR_MATCH_INDEX
変数に 格納され ます。 インデックスは、テキストの先頭を表す0から始まります。 一致する部分文字列は、 _TOCR_MATCH
変数の 下に保存され ます。 たとえば、認識されたテキストが 「There are Appls」 である上記の例では 、 _TOCR_MATCH=Appls
およびで 変数が作成されます _TOCR_MATCH_INDEX=10
。
4.3.2画像ベースのテキスト認識('text')
説明
トップ^
テキスト認識 (コード 'text' V3.0以降)は、イメージ保存された文字の集合に基づいてテキストや画面上の座標を認識することができます。
OCRと比較して:
- OCRエンジン は、通常、形状パターンによって文字を認識します。 数多くのフォント、テキスト、背景色があってもすぐに使用できます。
多くのOCRソリューション(Tesseract-OCRなど)は、テキストまたはそのセグメントの座標を取得することを許可していません。
OCRへ登録されていないフォントに適用されると失敗します。
このような状況の場合、回避策がないか、または特定のフォントを調整するために長い手作業が必要です
( Tesseractトレーニングプロセスなど )。
- HeartCore Roboの 画像に基づくテキスト認識
は、画像によって文字を認識しています。 これは、イメージコレクションが構築された特定のフォント、テキストの色および背景に対してのみ機能します。
入力テキストの検索条件で指定された部分文字列のテキスト座標または位置を取得します。
キャラクタイメージコレクション は、 キャラクタキャプチャウィザード で快適に
作成および管理できます。
詳細は ヘルプページ を参照ください。
"tocr"メソッドと同様に、 認識されたテキストは次の3つの方法で検証できます。
- "text" パラメータは指定された文字列のプレーンテキスト検索をアクティブ化し、発見した場合呼び出したコマンドの変数に0(成功)を、失敗の場合1(失敗)を返します。
- "text" パラメータ と"distance"パラメータ の組み合わせは、 許容(ファジー)テキスト検索を実行します 。
"distance" パラメータは単一文字の挿入、削除、または置換の編集操作ができるようになっており 、1つの文字列を変換するために必要な編集の最小数として定義( レーベンシュタイン距離 )されます。
このメトリックは、 "distance" パラメータは、 "text" パラメータに相当 するサンプルテキストを考慮するために、いくつの文字が省略されるか、または最大で正しく認識されないかを指定する整数です。
正規表現とは異なり、許容マッチングは、指定されたテキストと距離に一致する文字列の出現を認識したテキストを常に検索します。
文字列の前後に別のテキストを指定する必要はありません。
- 正規表現のマッチングは 指定され認識されたテキストと一致する
java.util.regex.Pattern
準拠の正規表現をおこないます。
式は テキスト全体 と 一致する必要があり 、一致する部分文字列の検索は実行されません。
このメソッドは、次のように、OCR結果を_TEXT接頭辞変数のセットに格納します。
変数名
説明
_TEXT_ERR=<error_text>
エラーメッセージ。
デスクトップ接続がない場合や、指定された文字イメージコレクションが存在しない場合や読み込めない場合など、
メソッドが文字 認識 を実行できない場合にのみ、データは生成されます。
_TEXT=<テキスト>
認識されたテキスト(完全な複数行形式)。 変数は
、メソッドが正常に実行されたときに常に作成されます
(デスクトップ接続が見つからないか、文字イメージのコレクションが失われても失敗しないことを意味します)。
_TEXT_X =<number>
_TEXT_Y=<number>
_TEXT_WIDTH=<number>
_TEXT_HEIGHT=<number>
X、Y座標、認識されたテキストの幅と高さ。
_TEXT_LINE_COUNT=<番号>
認識されたテキスト行の数。
_TEXT_LINE <n> = <text>
n番目のテキスト行(<n>は
1〜_TEXT_LINE_COUNTの 間の行番号 です)。
_TEXT_LINE_X_ <n> = <number>
_TEXT_LINE_Y_ <n> = <number>
_TEXT_LINE_WIDTH_ <n> = <number>
_TEXT_LINE_HEIGHT_ <n> = <number>
X、Y座標、およびn番目のテキスト行の幅と高さ(
<n>は1〜_TEXT_LINE_COUNTの間の行番号です)。
_TEXT_MATCH = <テキスト>
「テキスト」
パラメータ(平文
検索)または 「テキスト」 と 「距離」
(許容テキスト検索)の 組み合わせ と一致する認識されたテキストの部分 。
_TEXT_MATCH_INDEX = <数値>
_TEXT_MATCHによって参照される一致するテキストの位置(インデックス)。 インデックス
は、認識されたテキストの先頭に対応する0から始まります。
_TEXT_MATCH_X = <number>
_TEXT_MATCH_Y = <number>
_TEXT_MATCH_WIDTH = <number>
_TEXT_MATCH_HEIGHT = <number>
_TEXT_MATCH変数で参照される 一致するテキストのX、Y座標、および幅と高さ 。
オプション
このメソッドは 、入力に 1つの 文字イメージコレクション を必要とします。 「passrate」 の文脈における 'text' パラメータ の方法は、文字のレンダリングに若干の違いへの許容度を定義します。 この許容差は現在実験中であり、いくつかのより大きなフォントに対してのみ機能します。 合格率を100%に保つことが推奨されます。
「cmparea」
標準パラメータは、画面の特定の矩形領域にテキスト認識を制限するために使用することができます。 指定されていない場合は、デフォルトでフルスクリーンになります。
サポートされている特定のパラメータ:
text=<textToSearchFor>
認識されたテキストを検索するためのオプションのテキスト。
認識が正しく実行されたときにホスティングコマンドへは、0が返さ
と テキストが、認識されない場合は、指定された文字列または1が返されます。
このパラメータは、 パターン1 と一緒に使用することはできません 。
distance=<0-[textLength]>
寛容なテキストマッチングを実行するために " text" パラメータと組み合わせて使用されるオプション(レーベンシュタイン距離)。
詳細については、compareto_textメソッドの仕様を参照してください。
pattern=<正規表現>
java.util.regex.Pattern
準拠正規表現で
テキストを認識しテストします(オプション)。
式は テキスト全体と 一致する必要があります(一致する部分文字列の検索は実行されません)。
このパラメータは、 text と一緒に使用することはできません 。
戻り値
"text" 、 "distance" と "pettern" のパラメータが使用されない場合、呼び出されたコマンドには実際に認識されなかったとしても0(成功)を返します。
テキストマッチングパラメータが使用されている場合、、認識されたテキストが一致するかどうかに応じて、成功(0)または失敗(非ゼロ値)のいずれかを返します。
トラブルシューティング
失敗した 'text' 比較 を処理するには :
- 画面で認識しようとしている背景色とフォントの種類、サイズ、色が文字画像コレクションの文字画像と同じであることを確認してください。
- 内部アルゴリズムは、コレクションイメージからテキスト行とスペースサイズの高さを導出するので、 異なるフォントタイプおよび/またはサイズ の文字イメージを
単一のコレクションに混ぜてはいけません 。
異なるフォントと背景色の文字画像を混在させることは、文字のフォントタイプとサイズが同じであればOKです。
- テキストがアンチエイリアス処理されていたり、定期的にレンダリングされていない場合は、合格率を下げてみてください。 ただし、これは大きなフォントでのみ機能します。
使用例
Var _TEXT_LINE_COUNT=0
Compareto
"C:\MyAutomation\chars"
method=
"text" cmparea="x:33,y:2,w:200,h:22"
for (i=1; {i}<{_TEXT_LINE_COUNT}+1; i={i}+1) {
Typeline
"{_TEXT_LINE{i}}"
}
- 指定したデスクトップ領域のテキストを認識し、デスクトップに入力します。
Compareto
"C:\MyAutomation\chars"
method=
"text"
cmparea="x:33,y:2,w:200,h:22"
pattern="[aA]pplication"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- 認識されたテキストが
'アプリケーション'または 'アプリケーション'の単語と 一致 しない場合は、スクリプトを終了します 。
Compareto
"C:\MyAutomation\chars"
method=
"text"
cmparea="x:33,y:2,w:200,h:22"
pattern=".*[aA]pplication.*"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- 認識されたテキストに
'Application'または 'application' が含まれて いない場合にスクリプトを終了するように変更された前述の例 。
Compareto
"C:\MyAutomation\chars"
method=
"text"
cmparea="x:33,y:2,w:200,h:22"
text="apple" distance="2"
- 画面上のテキストを認識し、それが好きであるかどうか、および/または 'apple'のような文字列が含まれているかどうかを確認します。
- メソッドが 'There are a apple'のようなテキストを認識 すると 、正確に一致するものが見つかるため、 コマンドは 成功 (終了コード0) を報告します。
- この方法で 「Appleがあります」というテキストが認識された場合、 許容距離2以内の1文字(A→a)の代わりに「Apple」という単語を「apple」に変更できるため 、コマンドは 成功 を報告し ます。
- この方法は、のようなテキスト認識する場合は 「APPLSがある」と 、コマンドが報告され 、成功を 単語「APPLSは」
(1)置換の二つの操作で「Apple」に変更することができますので、(A-> a)と(2)加算(+ e)または置換(s→e)であり、これはまだ許容距離2以内ということになります。
- メソッドが 'There is Doppler'の ようなテキストを認識した場合、 単語 'Doppler'には単一の置換(o-> a)の後で 'apple'と一致するシーケンスが含まれているため 、コマンドは 成功 を報告し ます。
- 'Appisがあります'のようなテキストを認識 すると、 'Appis'には少なくとも3つの操作(A-> a、i-> l、s-> e)が必要なため 、コマンドは 失敗 (終了コード1) 2の許容距離以上の「りんご」になる。
テキストが正常に一致したとき、テキストにマッチ位置のインデックスに格納されている _TEXT_MATCH_INDEX
変数とそのX、Y座標、幅/高さ _TEXT_MATCH_X
、
、
および 。 一致する部分文字列は、 変数の 下に保存され ます。 たとえば、認識されたテキストが「There are Appls」である上記の例では 、
およびで 変数が作成されます 。 _TEXT_MATCH_Y
_TEXT_MATCH_WIDTH
_TEXT_MATCH_HEIGHT
_TOCR_TEXT
_TEXT_MATCH=Appls
_TEXT_MATCH_INDEX=10
4.4その他のメソッド
4.4.1ヒストグラムに基づく比較(「デフォルト」)
説明
トップ^
ヒストグラムに基づく比較法 (コード 「デフォルトでは」 )歴史的にそれがために設計された2005年にHeartCore Roboによって提供された第1の方法であった 一つ以上のフルスクリーンテンプレート画像(複数可)に対してデスクトップ画面のクイックチェック 。 それは "search2" や "search" メソッドの ようなより良い検証手段によって廃止されまし たが、特別な場合にはまだ使用されています。
この方法は、単純なヒストグラムの比較に基づいています。 画像ヒストグラムは、単純に言えば、各色の画素数とともに画像内に位置する色のリストです。 この方法は、まず、リモートデスクトップおよびテンプレート画像の両方のヒストグラムを計算し、それらを比較する。 次いで、画像比較の結果は、一致する画素の数を画像画素の総数で割ったものとして計算されます。
次の例は、このメソッドの動作を示しています。 簡単な2つの120x100画像(それぞれ12000ピクセル)を用意します。
画像1
120x100
画像2
120x100
色
画像1
画像2
マッチングピクセル
白
9000ピクセル
6000ピクセル
6000ピクセル
赤
3000px
6000ピクセル
3000px
一致するピクセルの合計:
9000ピクセル
比較結果が 0.75以上75%である。この場合9000px / 12000px、です。 これは、画像を視覚的に比較するときに人間が言うことに相当します。
これは非常に基本的なアルゴリズムですが、アプリケーションとデスクトップの背景色が異なる場合、デスクトップが正しいアプリケーションを表示するかどうかを確認する必要がある場所で十分です。 このアルゴリズムは、全画面色ヒストグラムに影響を与えないウインドウ位置の変化に関しても非常に頑強である。
デフォルトの方法は、同じサイズの2つの画像を比較するように設計されていることに注意してください 。 テンプレートイメージのサイズがリモートデスクトップと異なる場合は、両方のイメージが内部で交差のサイズに切り取られます。 これにより予期しない結果が生じる可能性があるため 、カスタム比較領域("cmparea"パラメータ) とともにデフォルトの方法を使用することは お勧めしません。
オプション
このメソッドは
、hostingコマンドまたはJavaメソッド呼び出しによって指定された 1つ以上の テンプレートイメージ および/または イメージコレクション を必要 とします。 "passrate" のパラメータは 、 "default"
メソッドの 文脈において 、テンプレート画像とスクリーンヒストグラムの比較の最も低い許容結果を 定義します( メソッドの説明 の例を参照してください )。 デフォルトは95%です。 「cmpareaは、」 省略された場合、フルスクリーンオプションで、デフォルトです。
その他のメソッド固有のパラメータはサポートされていません。
戻り値
このメソッドは、生成された比較結果が指定したパスレート以上の場合に、呼び出し元のコマンド (メソッド呼び出し) が 0 (成功) を返すようにします。それ以外の場合は1の値を返します。
トラブルシューティング
"default"メソッドはメソッド固有のパラメータを使用しないので、失敗したヒストグラム比較を扱う唯一の手段は "passrate"
パラメータの 減少です 。 ヒストグラム比較後の実際の比較結果を表示するには、変数ビューアで_COMPARE_RESULT変数を探します。
一般的な イメージ比較の推奨事項 の他に、以下の信頼性要因を考慮する:
- HeartCore Robo DesktopをインストールしているPCのデスクトップからすべてのアイコンとアイテムを削除し 、できるだけシンプルにします。 ほとんどのデスクトップでは、時刻と日付の更新との相違点を示す時計/日付も表示されます。 そのようなオブジェクトが比較対象の領域に参加している場合は、パスレートを使用して不一致ピクセルの許容値を上げます。
- テストしているアプリケーションウィンドウが 安定したサイズ で 安定した場所に 開いている かどうかを確認します。 可変ウィンドウのサイズと場所は、比較結果に大きな影響を与えます。 比較する前に、スクリプト化されたキーシーケンス(Alt + Spaceの後にWindowsではX、Linux / GnomeではAlt + F10など)を使用してアプリケーションウィンドウを最大化することをお勧めします。
使用例
Compareto netscape1.png;
netscape1.png
method="default"
passrate="90"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- -
90%の合格率で デスクトップ画面 netscape1.png
と netscape1.png
画像を 比較し、画面に 一致しない場合は終了コード1でスクリプトを終了します。
4.4.2イメージの差分( "diff")
説明
トップ^
イメージの違い (コード 「diff」 )
は、デスクトップ画面を1つ以上のフルスクリーンテンプレート画像 と比較 し、一連の相違点を生成します。 これは通常、 Screenshot コマンドで 使用され 、強調表示された相違点を含むイメージを レポート に挿入します (下記の例を参照)。 アルゴリズムはエッジに基づいており、 色の変更は省略されています 。
オプション
このメソッドは 、ホスティングコマンドまたはJavaメソッド呼び出しによって指定された 1つ以上の フルスクリーンサイズのテンプレートイメージ および/または イメージコレクションを必要とします。 「合格率」 のパラメータは
、PASS結果を生成するための差の最低許容レベルを定義する。 デフォルトは95%です。 「cmpareaは、」 省略された場合、フルスクリーンオプションで、デフォルトです。
その他のメソッド固有のパラメータはサポートされていません。
戻り値
比較結果が、指定された合格率以上である場合に呼び出されたコマンド(メソッド呼び出し)へ0(成功)を返します。 それ以外の場合は1の値を返します。
使用例
Compareto myscreen.png
method="diff"
passrate="98"
if ({_EXIT_CODE} > 0) {
Exit
1
}
- 画面が myscreen.png
2%以上 異なる場合は、スクリプトを終了します 。
Screenshot myapp
.png
template="expected_screen.png"
passrate="95"
method="diff"
drawdiff="true"
- デスクトップ画面と expected_screen.png
イメージの 違いを レポートファイルのスクリーンショットに描画します。