Script Creation
必要なスクリプト・コードを作成するには、説明したようなさまざまな方法があり、いずれもエンドユーザーにとってできるだけシンプルになるように設計されている。それぞれについて、これからの章でさらに詳しく説明する。
スクリプトを作成する際には、コードを生成する方法以上のことを考慮する必要があります。一歩下がって、プロジェクト全体の構造も考えるべきです。プロシージャや変数を作成して使用したり、あるいは「プロシージャ ライブラリ」(再利用可能なコードのグローバルに共有されたスニペットのリス トを含む中心的なスクリプト)を使用したりすると便利かどうかが、すぐに理解で きるようになります。
スクリプトの設計とプロジェクトの構造は、かなり流動的で、時間の経過とともに変化します。
レコーダー
スクリプトレコーダーはGUI機能で、接続されたSUA(System Under Automation)とのユーザーインタラクションをアクティブスクリプトに記録することができます。すべてのマウス&キーボードイベントを監視し、記録します。
常にアクティブなエディタ(表示されているエディタ)にコードを生成するため、エディタ内のキャレット(カーソル)位置をコードを挿入したい行に設定してください。レコーダーは、デスクトップ・ビューワーからマウスやキーの操作をMouse、Press、Type、Typelineコマンドに変換し、エディターに挿入します。また、個々のイベント間のタイムスパンを測定し、設定された係数を乗じて、waitパラメータを通してコマンドに挿入します。レコーダーの動作は、PreferencesウィンドウのScripting->Script Recorderプリファレンスグループでカスタマイズできます。
Record %26 Replay機能があるからといって、ただ何かを記録すればオートメーションが完了するわけではない。しかし、それは間違いなくあなたの生活をずっと楽にし、学習曲線をかなり平坦にする。
接続された環境でタスクやシナリオを再現するのに必要な、キーやマウスイベントの基本的な流れを作るのに役立つだろう。タイムアウトの修正、コマンドのマージ、検証ポイントの追加、再利用可能なプロシージャの作成、適切な変数によるコマンド引数のパラメータ化など、生成されたコードに対して手動で調整を行う必要がある場合もあります。
レコーダーはリボンバーから簡単にアクセスできます:
レコーダーを起動すると、3つの異なる操作モードを選択することができます。以下の章では、各モードについて順番に説明します。
インタラクティブモード
高速モード
レガシーモード
インタラクティブモード
このモードは、レコーディング・プロセスのあらゆる段階で、ユーザーに大きなコントロールを与えます。ライブ環境に対して実行される各アクションに続いて、ユーザーは、生成したいコマンドとパラメーターを正確に定義することができます。
注:この録画モードは、「ローカル・デスクトップ」接続では使用できません。
レコーダーを起動すると、レコーダーモード選択ウィンドウが表示され、すでに述べた3つのオプションが提供されます。このセクションでは、最初の「インタラクティブ」モードを説明します:

レコーダーが起動されると、ウィンドウ内またはキーボードで行ったすべてのマウス操作に反応します。 Desktop Viewerウィンドウ内またはキーボードで行ったすべてのマウス操作に反応します(マウスがデスクトップ・ビューアー上にあり、フォーカスを与えている限り)。
キーボードによる操作は、スクリプトエディタに直接反映されます。
マウスアクションを実行した場合、例えば、次のようになります。 Clickを実行すると、Robotはまず現在のディスプレイを分析します:

この分析の目的は、ロボットが最適な画像テンプレートを決定することです。複雑なアルゴリズムを使って、テンプレート作成の標準的なベストプラクティスに従った最適な切り抜き部分を決定します。また、画像テンプレートは必ずしもそれ自体に意味を持たせる必要はないことを覚えておいてください。
ベストプラクティスに関する詳しいガイドラインは、一般的なヘルプテキストとオンラインチュートリアルをご覧ください。
Robotが内部的にこの作業を完了すると、提案された切り抜き領域が表示され、さらにアクションをカスタマイズするためのコントロールも表示されます。

選択範囲のサイズと位置の詳細とともに、以下のようなオプションも表示されます:
![]() | 選択範囲とクリック位置が正しいことを確認して続行します。 |
![]() | 現在の選択範囲に基づいて、結果のアクションをカスタマイズします。(以下でさらに詳しく説明します) |
"名前" | これは自動生成される Image Collection. |
![]() | 既存のコレクション。新しいテンプレートを既存の画像コレクションに追加したい場合は、これを選択します。 |
各オプションをもう少し詳しく説明します。
確認します:
希望するアクションを確認すると、RobotはアクションをSUTに適用し、画像コレクション/テ ンプレートを作成し、必要なスクリプトコマンドをアクティブエディタに挿入します。


カスタマイズ
アクションのカスタマイズを選択すると、3つのサブオプションが表示されます:

スキップ- クリックアクションをSUTに適用します。 に適用します。スクリプトに記録しません。
キャンセル- アクションを完全に破棄します。接続環境には適用されず、スクリプト内でコードが生成されることもありません。
Component Captureでコードを設計する- このオプションを選択すると、Component Captureウィザードが起動し、スクリプトに記録するアクションをカスタマイズできます。
(このオプションの詳細については、オンライン マニュアルの『Component Capture』セクションを参照してください)。
名前:
名前を手動で入力する場合、既存のコレクション名と一致すると、フィールドが黄色に強調表示されます。

コレクション名は単一の値として、またはOS標準のパス区切り文字を使用したフォルダパスとして入力できます。例えば、Windowsの場合、"AppsWebBrowser。"と入力できます。
フォルダがまだ存在しない場合、そのフォルダは作成されます。そうでない場合、既存のフォルダの最下位レベルに追加されます。
既存のコレクション:
既存コレクションボタンを選択すると、小さなダイアログが開き、"Image Collections" ツリーが表示されます。これにより、新しいテンプレート画像を追加するために利用可能なすべてのコレクションを参照できます。

類似の画像テンプレートがすでに含まれている既存のコレクションを手動で入力または選択した場合、新しいテンプレートを作成するかどうかを確認するよう求められます。

記録中にキーボードを操作しても、インタラクティブなダイアログは表示されません。さらに、Robotは "Type "または "Press "コマンドの直前に "wait "パラメータを挿入します。

ヒント: キーボードアクションを実行する際には、マウスポインタがデスクトップビューアーのウィンドウ内にあることを確認してください。
高速モード
Rapid」モードでは、オートメーション対象のシステムに対して実行したアクションを迅速かつ効率的に記録し、その後に再生できるようにする、というタスクにまず集中することができます。中断することなく、完了時に記録されたデータをカスタマイズするオプションが表示されます。
ローカルデスクトップ」でのオートメーションの性質を考慮すると、この接続タイプを使用する場合、これがデフォルトの記録モードとなります。同じ理由で、「インタラクティブ」モードは「ローカルデスクトップ」接続では使用できません。
オートメーション下のシステムに接続すると、前述の標準的な方法で録画が開始されます。

ラピッドモード」を選択すると、すぐにSUAに対して必要なアクションを開始できます。
このモードでは、Robotによるインタラクションやポップアップダイアログは表示されません。
ヒント: "local"接続を使用する場合は、右CTRLキーを押して記録セッションを終了し、Robot UIに戻る必要があります。
録画が完了すると、Robotは右側のペインに "Recorder History "ウィンドウを表示します。

レコーダー履歴ウィンドウはスクリプトエディターとも連動しており、コード行をクリックするとハイライトされるだけでなく、関連するキャプチャ画像も表示されます。同様に、右側のキャプチャ画像を選択すると、エディタで関連するコード行がハイライトされます。

レコーダーヒストリーパネルはツリー表示になっており、現在のロボットセッションで行われたレコーディングセッションごとにフォルダが分かれています。各フォルダ内には、録画中に生成された画像コレクションが一覧表示されます。
Rapidモードでは、画像コレクションに自動的に名前が付けられます:
comp%26lt;mmdd%26gt;-%26lt;n%26gt; をクリックします。

ミニツールバーには、選択した画像コレクションを削除するオプションがあります。
![]() | 現在選択されている画像コレクションを削除します。 |
![]() | スクリプトレコーダーの環境設定にすばやくアクセスできます。 |
![]() | レコーダー機能のヘルプを開きます。 |
![]() | レコーダー履歴パネルを閉じます。 |
削除] を選択すると、データが完全に削除される前にこの操作を確認するよう求められます。

画像コレクションツリーの下に、現在選択されているコレクションの記録処理中に自動的 にキャプチャされた各画像テンプレートのプレビューサムネイルが表示されます。テンプレートは以下のように 1 つから複数まであります。

もしRobotが、クリックされたアイテムが特定の状態で異なる表示が可能であることを検出した場合、これらのキャプチャを試みるかもしれません。例えば、ボタンは自然な状態、ホバーされた状態、押された状態など様々な状態を持つことができます。
Robotはこのような様々な画像テンプレートを複雑でインテリジェントなアルゴリズムに基づいてキャプチャしますが、必要に応じて若干の変更が必要になる場合があります。変更は画像プレビューをクリックするか、"編集 "ボタンをクリックして行います:
これにより "テンプレートプレビュー "ウィンドウが開き、必要なテンプレートエリアを調整したり再選択したりすることができます。また、必要に応じてクリックポイントを設定/リセットすることもできます。完了したら "保存して閉じる "を選択してください。

同様に、Robotが追加テンプレートや不要なテンプレート画像をキャプチャすることがあります。テンプレートプレビューの下にある "Delete "ボタンを選択することで、簡単に削除することができます。

最後に、一番下のペインには、現在選択されているコレクションに対してレコーダーが生成した実際のスクリプトコマンドが表示されます。

いつものように、生成されたコードはスクリプトエディタウィンドウで、スクリプト補助ツールやウィザードを使用していつでも直接編集できます。さらに、"Update "ボタンを選択することで、"Recorder History "ウィンドウのコンテキストからコマンドを編集できます。
これにより、コマンドのプロパティが表示され、検索範囲や許容範囲(「パスレート」)などのパラメータを調整することができます。
レガシーモード
このモードは4.1以前のレコーディングメカニズムを再利用しています。マウスとキーボードの操作をスクリプトエディターに直接記録します。記録中に SUT に対して実行されるすべ てのマウス操作は、座標法を用いてマウス位置に基づいたスクリプトコマンドを生成する。
このモードは、AUT のレイアウトおよび設計が安定している場合に一般的に使用される。
キャプチャされたコマンドに必要な変更は、標準的なスクリプト作成支援機能およびウィザードを使用 して、スクリプトエディタウィンドウから実行される。

レガシー」モードは、「マウス」、「タイプ」、「プレス」コマンドに基づいてコードを生成するため、何かが発生するのを「待つ」メカニズムが組み込まれていない。したがって、このモードでは、各コマンドに「待機」パラメータを挿入し、リアルタイムでアクションを記録し、最終的に実行する。

必要な画像/テキスト比較、検証ポイント、またはスクリーンショットは、録画後に挿入する必要があり、標準メニューとスクリプト補助機能を使用して生成できます。
コンポーネント キャプチャ ウィザード
コンポーネントキャプチャは、スクリプト開発者が簡単な方法で自動スクリプトアクションを生成するのに役立ちます。この機能は4.0リリースで更新されましたが、従来の3.xの機能も引き続きご利用いただけます。
Component Capture v4では、3~4ステップでターゲットアクションを作成するウィザードを使用します。
Component Capture v3では、1画面のダイアログを使用します。このプロセスは高速ですが、使い勝手が悪く、アクションのパラメータが少なく、「色で検索」やOCRアクションでは直感的ではありません。
v4ウィザードとv3ダイアログの両方には、他のバージョンに切り替えるためのボタンが用意されています。この設定は記憶され、ユーザーが再度バージョンを切り替えない限り、選択されたキャプチャバージョンがすべてのアクションに使用されます。
コンポーネントキャプチャは 
キャプチャ]ツールバーボタンまたはスクリプトメニューの対応する項目で有効になります。
バージョン4

を選択すると

サポートされているタイプ
画像からコンポーネントを検索は、"search2 "画像比較メソッドに基づいたアクションを作成します。テンプレート画像から画面上のコンポーネントを探します。
色でコンポーネントを検索は、指定された色、最小サイズ、最大サイズによってコンポーネントを検索します。これは、"object "画像比較メソッドに依存します。
OCRを実行してテキストを認識は、OCRエンジンを使用して、テキストによってコンポーネントを識別します。これは "tocr "画像比較メソッドを使用します。
アクションのサブタイプは、コンポーネントを識別するためにどの画像比較コマンドを使用するかを定義します:
最初の"Find %26lt;subj%26gt;"最初の "Find %26lt;subj%26gt;"サブタイプは、Comparetoコマンドの呼び出しを生成し、1回の比較を実行する。
2番目の"%26lt;subj%26gt;が表示されるまで待つ"サブタイプは、Waitfor matchコマンドを利用し、コンポーネントが特定されるか、指定されたタイムアウトに達するまで、繰り返し比較を実行する。
番目の"%26lt;subj%26gt;が消えるまで待つ"サブタイプは、Waitfor mismatchコマンドを使用し、コンポーネントがスクリーンから消えるまで、または指定されたタイムアウトに達するまで、比較を繰り返し実行します。
選択されたアクションがテンプレート画像を必要とする場合(画像からコンポーネントを検索するなど)、ウィザードはComponent Image(s)画面を表示します。例えば、プロジェクトビューのコンポーネント画像ブランチに表示されている既存の画像や画像コレクションに対してウィザードが開かれた場合など、画像や画像が既に知られている場合には、この画面は利用できないことがあります。

この画面では、検索対象となるテンプレート画像や画像コレクション(フォルダ)を定義することができます。この機能はコンポーネント画像ブランチと似ています:
新しいコレクション(画像フォルダ)を作成するには新規コレクション
現在のデスクトップ画面から新しいコンポーネント画像を作成(クロップ)するには新規画像
続行するには、ツリーで1つまたは複数の画像または画像コレクションを選択し、次を選択します。次へ
次へパラメータ画面は動的で、選択されたアクションタイプとサブタイプ(選択された比較方法とコマンド)のパラメータを表示します:

最後の画面は、識別されたコンポーネントをどうするかを定義します。複数のオプションがあり、コンポーネントをクリック、右クリック、ダブルクリックしたり、コンポーネントの存在を確認するアクションを実行することができます。この画面では、コンポーネントが見つからない場合、画面上に複数のインスタンス(一致する場所)がある場合、コンポーネントの場所が元の場所と異なる場合などのエラー処理を定義することもできます。

バージョン3
コンポーネント・キャプチャv3は通常、現在のデスクトップ画像からコンポーネント(ボタン、フィールド、テキストなど)の画像を切り出し、プロジェクトのテンプレート・フォルダに保存し、アクティブなスクリプト・エディタにその画像を使用するコードを生成するために使用します。このモードは「色で検索」やOCRアクションにも使用できますが、ユーザーが最初のカットエリア選択画面を通過する必要があります。

コンポーネントキャプチャモードを有効にするには、ツールバーのコンポーネントキャプチャボタンまたはツール
ボタンをクリックするか、[ツール] メニューから [コンポーネントキャプチャ] を選択します。デスクトップイメージはフリーズし、デフォルトのキャプチャエリアを保存するためにグレーに変わります。キャプチャモードをキャンセルするには、ボタンまたはメニュー項目をもう一度クリック(選択解除)します。
キャプチャ領域を調整するには、角や破線をドラッグします。領域を移動するには、Ctrl、Alt、またはShiftを押しながらマウスをドラッグします。パフォーマンスと精度を向上させるため、コンポーネント画像はできるだけ小さく作成することをお勧めします。
キャプチャエリアの中央にある赤い十字はクリックポイントと呼ばれます。これはドラッグすることもでき、コンポーネントを画面上で見つけたときにクリックする場所を定義します。クリックポイントはキャプチャエリアの外にドラッグすることもでき、「コンポーネントからこの方向とこの方向のXYポイントをクリックする」といった作業を自動化することができます。
キャプチャエリアとクリックポイントの位置が決まったら、OKボタンをクリックしてコンポーネントキャプチャウィンドウに進みます。
選択中に赤い十字のキャンセルボタンをクリックすると、現在のキャプチャエリアをキャンセルすることができます。キャプチャ領域を別の場所に再作成するには、画像内でマウスをドラッグします(マウスの左ボタンを押したままマウスを動かします)。すべての操作をキャンセルするには、右端の終了ボタンをクリックします。
コンポーネントキャプチャウィンドウでは、対象となるテンプレート画像ファイルと、スクリプトが実行するタスクを定義します:

最初のグループは、選択した領域で実行するタスクを定義します。最初のグループは、選択した領域で実行するタスクを定義します。この領域は、画像検索用のテンプレー ト画像に保存したり、OCR またはオブジェクト検索の対象領域として使用したりできます。アクションによっては、ドロップダウンの下に動的に表示される追加パラメータがあります。例えば、「コンポーネントが表示されるまで待ってクリックする」アクションには、設定可能なタイムアウトがあります。
コントロールの2番目のグループは、コンポーネント画像ファイルのコレクション、名前、ターゲットフォルダを指定します。選択されたタスクがOCRまたはオブジェクト検索の場合は表示されません。画像コレクションフィールドはオプションで、コンポーネント画像用の新しいサブフォルダ(コレクション)を作成できます。ドロップダウンには、ターゲットで利用可能なフォルダがあらかじめ入力されています。コレクションが定義されると、画像比較は指定されたディレクトリ(またはそのサブディレクトリ)内のすべての画像を処理します。コレクションについての詳細は、スクリプト言語仕様の画像コレクションの章をお読みください。Image Name は必須で、拡張子なしの画像ファイル名を定義します。フォーマットと拡張子は、フィールドの隣にあるExtensionsドロップダウンから得られます。Target Folderは デフォルトで、スクリプトのTEMPLATE_DIR変数で 定義されたテンプレートディレクトリに設定されます。このディレクトリの下に存在する画像とコレクションは、相対パスを通して呼び出されます。たとえば、図に表示されているパラメータは、 _C:˶MyAutomation_templatesテンプレート・パスの 下に 新しいコンポーネント画像 desktop_icon.pngを作成するようにウィンドウに指示 します。
第3のグループは、タスクが正常に完了したとき、つまりコンポーネントが見つかったとき(画像検索タスク)、OCRがターゲット領域内のテキストを認識し、オプションでパターンと照合することに成功したとき、または指定された色のオブジェクトが領域内に少なくとも1つ見つかったときに実行されることを定義します。最も一般的なアクションはマウスクリックです。
第4のグループは、コンポーネントが画面上に見つからない場合に何を行うかを指定する。前のコントロール・グループと同様に、あらかじめ定義された一連のアクションを持つドロップダウンがあります。写真で選択されているアクションは、スクリプトを終了コード1で終了させます。
5つ目のグループは、画面上にコンポーネントのインスタンスが複数ある場合の動作を定義します。サポートされているアクションのリストは、前のグループで利用可能なものと同様です。写真で選択されているアクションは、スクリプトレポートに警告ノートを作成するカスタムWarningコマンドを呼び出します。
最後のグループは、コンポーネントの位置変更を扱います。コンポーネントの元の座標は画像ファイルのメタデータに保存されているため、スクリプトはコンポーネントが移動したかどうかを確認し、アクションに関連付けることができます。画像で選択されているものは、位置の変更を無視します。
ウィンドウを閉じ、コンポーネント(テンプレート)イメージを保存し、対応するスクリプトコードをアクティブなエディタに挿入するには、OKボタンを選択します。 キャプチャ領域のある前のデスクトップビューに戻るには、[戻る]をクリックします。 ウィンドウをキャンセルし、変更を破棄して コンポーネントキャプチャモードをオフにするには、[キャンセル]を選択します。 このヘルプトピックを開くには、[ヘルプ]を選択します。
例えば、OKで閉じると、上記のウィンドウがアクティブエディタに挿入されます:
WaitFor match template="desktop_icon.png" method=search2 timeout=20s
if ({_EXIT_CODE} > 0) {
Exit 1
} else if ("{_SEARCH_MATCH_COUNT}" > 1) {
Warning "The Avast icon was found {_SEARCH_MATCH_COUNT} times!"
} else {
Mouse click to=x:{_COMPARETO_CLICK_X},y:{_COMPARETO_CLICK_Y}
}
マニュアル作成
前の章で説明したスクリプト作成支援機能は、基本的なスクリプトフローを非常に迅速かつ簡単に開始するための良い方法です。しかし、変数の使用や、よく再利用されるセクションを1つのプロシージャーにまとめたり、待機値を削除/調整したりするなど、必要な柔軟性を持たせるために、さらに「微調整」が必要になる場合があります。そのためには、スクリプトエディターで直接作業を開始する必要があります。
スクリプト作成支援機能によって生成されたコードは、すべて手動で作成できるだけでなく、その後手動で編集することもできます。
コードの作成と変更は、スクリプトエディターウィンドウで直接行うことも、コマンドのプロパティダイアログを呼び出して行うこともできます。
スクリプトの基本をいくつか理解しておくと、最良の結果が得られることがわかります:
スクリプトは行ごとに処理されます。1つのコマンドまたは式を複数行に分割することはできません。
行には、先頭や末尾に空白文字(スペース、タビュレータなど)をいくつでも含めることができます。それらは、処理を進める前に切り取られます。
空行は無視される。
ハッシュ「#」またはダブルバックスラッシュ「//」で始まる行はコメントとみなされ、無視される。
上記の規則で除外されないその他のテキスト行には、コマンド、プロシージャーヘッダー、プロシージャーコール、if/else/for文、またはその終端である右中括弧'}'など、スクリプト言語の要素を1つ含める必要があります。
変数とプロシージャ
Variablesは、スクリプトの他の場所でパラメータ値を置き換えるために使用できます。変数はスクリプト全体で何度でも呼び出すことができるため、スクリプトのメンテナンスを最小限に抑えることができます。
以下に、基本的な例を用いて、記録されたコードの簡単な部分を取り上げます。 Variablesと Procedures.

まず、最初のTypeコマンドで入力されたFirst Nameを置き換える変数を追加します。これは、手動で「Var FirstName=Chris」と入力するか、緑色の「+」を選択して、コマンド・リストからVarを見つけてプロパティ・ダイアログを呼び出すことでできる:
注:注:変数は使用する前に宣言する必要があります。この場合、4行目より前に宣言する必要があります。

次に、Typeコマンドを修正して、新しいVariableの値を取得する必要がある。この場合も、エディターでテキストを直接 "Chris "から"{FirstName}"に変更するか、Typeコマンドを右クリックしてPropertiesを選択します:

注:注:変数を呼び出すときは、中かっこで変数名を囲む必要があります:

Surname(2番目のTypelineコマンド)で同じことをすると、変数の値を簡単に変更できるコードができあがります。
これを Proceduresこの4行のコードは、プロシージャ名を呼び出すだけで、プロジェクト全体のどこでも再利用できます。
A Proceduresは、必要なコードを2つの中括弧で囲み、その前にプロシージャーコマンドと選択した名前を書くことで定義されます。
緑色の "+"メニューを使い、コードの先頭で、プロシージャーを挿入するを選択する:

指示に従ってプロシージャー名を挿入し、アクションコード(Ctrl+X、Ctrl+V)を開閉中括弧の間に移動します。
プロシージャー名、つまり "Login"(13行目)を入力するだけで、そのコードを呼び出すことができます:
注:プロシージャーは、定義した後で呼び出す必要があります。スクリプトの実行は、スクリプトの流れで決定されない限り、1行ずつ実行されることを覚えておいてください。

ブール式
boolean expressions論理式は、if/else や for のような構文を容易にします。以下の演算子がサポートされています:
括弧 '(' および ')'
より大きい '%26gt;' と '%26lt;' より小さい '。この2つの演算子には数値引数が必要です。
と等しく、'==' と等しくない。引数はまず数値に変換され、比較される。引数の少なくとも1つが数値でない場合、プレーン文字列比較が実行される。例
yes == no' の結果は偽となる。
yes != no' の結果は真となる。
1.0==1'の結果は真となる。なぜなら、両方の引数が数値に変換でき、数値が等しいからである。
演算子'%26%26'と'||' - 論理的な "and "と "or"。これらの演算子はブール引数、つまり他の式を必要とする。例
式 '1 %26gt; 0 || yes != no' は、2つの式のどちらかが真であるため、真となる。
式 '1 %26gt; 0 %26%26 yes != no' は、一方の式が偽であるため偽となる。
T-Plan Robotは、変数の存在や文字列の比較を行う演算子もサポートしています:
単項演算子 'exists %26lt;variableName%26gt;' は変数の存在を検証する。例
式'exists _REPORT_FILE' は、スクリプトがReportコマンドでレポートを作成した場合に真になります。
演算子'contains'は、最初の文字列引数がもう一方の引数を含むかどうかを検証します(大文字と小文字が区別されます)。例
接続されているVNCサーバー名に'server'が含まれている場合、式'"{_MACHINE}" contains "server"'は真になります。
演算子'startswith'は、最初の文字列引数がもう一方の引数から始まるかどうかを検証します(大文字と小文字は区別されます)。例
式 '"{_DISPLAY}" startswith "localhost"'は、接続されたVNCデスクトップ名が'localhost'で始まる場合、例えば'localhost:1'のように真になります。
演算子'endswith'は、最初の文字列引数がもう一方の引数で終わっているかどうかを検証します(大文字と小文字を区別します)。例
例: '"{_DISPLAY}" endswith ":3"'という式は、接続されているVNCサーバーがポート5903で動作している場合に真になります(これは通常、デスクトップ名の':3'ディスプレイ番号で示されます)。
オペレータ 'matches' は、最初の文字列引数を java.util.regex.Pattern 準拠の正規表現と比較します。例
式 '"{_DATE}" matches "201508[12][1-5]"' は、現在の日付が2015年8月11日から15日の間、または21日から25日の間にある場合に真になります。
if/Else ステートメント
T-Plan Robot Enterpriseは以下をサポートします。if/else statement.フォーマットは
if(<boolean expression>) {
<コマンド>
} else if (<boolean expression>) {
<コマンド>
} else {
<コマンド>
}
else if' と 'else' の分岐は任意である。else if'分岐の数に制限はないが、'else'分岐は1つだけとする。中括弧'{'と'}'は、上で表示したように、関連するif/else/else ifキーワードと同じ行になければならないことに注意。構造化ブロック全体を終了させる右中括弧'}'は唯一の例外で、1行に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 behaviour - the template image was found {_SEARCH_MATCH_COUNT} times!" image=unexpected.png
}
if/else文は、他の構造化プログラミング言語と同じように、入れ子にしたり、for文のような他の構文と組み合わせたりすることができます。
for 文
T-Plan Robot Enterpriseはfor statementこれは特定の条件が満たされる限り、値の範囲を反復したりループしたりすることができます。for文には2つの一般的な形式があります。
1.条件付きfor文
for文の最初の変形は、指定された論理式が真になる限り実行されます:
for(<statement1> <boolean expression><statement2>) {
<commands>
}
ブール式はすべてのループの前に評価されるため、もし最初から偽の結果が出た場合、ループ内のコマンドはまったく実行されません。ステートメント1とステートメント2は Evalコマンドで評価さ れ、'<変数>=<数値式>'のような構文を持つ。これらは空でも構いません。
以下の例は等価で、0から5までの変数'index'の値に対してループします。 両方のコード・スニペットは'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>
}
次の例では、"I speak the English, Spanish, Brazilian Portuguese. "という文章が入力される。
Type "I speak "
for language in English Spanish "Brazilian Portuguese" {
if ("{language}" == "Brazilian Portuguese") {
Type "{language}."
} else {
Type "{language}, "
}
}
値セットは変数で指定することもできる。バージョン3.0.1以降では、変数で指定したスペースを含む値をサポートしています。次のコードは、変数で値セットを指定した前の例を示しています。変数呼び出しはダブルクォーテーションで囲んではいけない。
Type "I speak "
Var VALUES="English Spanish \"Brazilian Portuguese\""
for language in {VALUES} {
if ("{language}" == "Brazilian Portuguese") {
Type "{language}."
} else {
Type "{language}, "
}
}