メニュー

logo

カチシステムはお客様に寄り添った
システム開発と支援サービスを提供し
「やさしい最先端」を創造します。

【第100回】ロータス博士のWinActor塾~リトライできるシナリオⅠ

2024.03.27

ついにきてしまったのう!この時が!

あれ、何かありましたっけ?

なぬ、気付いておらんのか。

タイトルをよく見るのじゃ。第100回じゃぞ!

えええ!本当だ!

ついに3桁ですか!すごいですね。

いつも読んでくれている読者の皆様のおかげじゃのう。

じゃあ今日は休みですかね!打ち上げいきますか!

いや、普通に塾じゃぞ。いつも通りに。

・・・

シナリオのリトライ

シナリオの作成に慣れてくると、次のステップとして挑むのは停止した時の処理です。

もちろん、人の手によって故意に中断した場合ではなく、不測の場合の停止です。

 

多くのシナリオでは、不測の場合の処理として大きく次の二つのパターンを実装します。

 

1.シナリオを続行不可とし、終了する。

2.異常を検知したら、操作を遡ってやり直す。

 

安定したシナリオを作るためには、この2つのパターンをうまく組み合わせたフローを構築することが大切になってきます。

 

 

不測のエラーとは

不測のエラーは、作り手が想定していないエラーのことです。

あらかじめ全てのエラーを予測することは現実的に不可能ですので、

作成時にカバーできない範囲のエラーは不測のエラーとして処理することになります。

これは「例外処理」のノードを配置すると簡単に実装できます。

 

例外処理についてはこちらの記事を参照してください。

 

今回は、上で紹介した2つのパターンの2つ目、リトライについて考えていきましょう。

 

 

リトライのタイミング

ではリトライをするかしないかの判断はどのタイミングで行えばよいでしょうか。

基本的には、WinActorがアプリやブラウザを操作し、システムから結果が返ってくるところでチェックを行いリトライします。

一番イメージしやすいのは、ログイン画面かのう。

失敗すると、ログイン失敗の画面になったり、テキストが表示されたりと

すぐに結果が返ってくる。

成功すればマイページなどに遷移するし、わかりやすいじゃろう。

リトライは、何かしら結果が出るタイミングでなければ判断できません。

自分の好きなタイミングで行うものではないため、アプリなどを実行してその結果がわかってから

結果を評価してリトライするかしないかを判断すると良いでしょう。

リトライはループで作る

リトライはフロー上ではループを使用して作成します。

通常のループと違うのは、必ずしもループしないという点と

ループを抜ける際には単純な回数ではなく、必ず判定を行ってループするかしないかを判断するという点です。

 

ループしないというのは、ループの中を一度だけの通過で抜けるということです。

実行した操作が成功すればリトライをする必要がないので、ループせずに抜けるようにします。

 

実際のフロー例を見てみましょう。

 

このフローはWinActorの「後判定繰返」ノードを使用しています。

後判定繰返はプロパティで設定した条件に従い、条件が正しい間はループするというものです。

実行結果が失敗だと判断できる条件を設定しておけば、失敗したらループするということになるため

これがリトライの処理となります。

 

後判定繰返を使わない場合は次のように通常の繰り返しでリトライする方法もあります。

 

少しフローが大きくなってしまいますが、失敗した内容によって処理を分けたい場合などに有効です。

分岐ノードを複数に分ければ、どのチェックで引っ掛かったかが一目瞭然ですし、個別に処理を作成できます。

 

後判定繰返でも最終結果を格納する変数を用意すれば同じようなことができますので

どちらの見た目が見やすいか、管理しやすいかを考えて好きなほうを選んでください。

試してみましょう

というわけで、こんな偽のフォームを用意してみた。

 

テストページはこちら

 

お、なんですかこれ。

これは偽物のログインフォームで、ワシが突貫で用意したんじゃ。

ちょっと作りが適当じゃが・・・

これを使ってリトライを試してみようと思う。

これでリトライの練習ができるんですか?

実はこのフォームは必ず2回失敗するようにできておる。

ええ・・・やば。

つまり成功するまで繰り返すシナリオを作ればいいと。

そういうことじゃ!

ただし、2回失敗するからと言ってループ回数を指定してはいかんぞ。

次回はこれを使ってシナリオを作っていくのじゃ。

先に試してみても構わんぞ。

 

フォームの挙動について

博士の用意した偽フォームは、上のリンクから開くことができます。

リンク先に説明がありますが、このフォームはユーザ名とパスワードを入力しなければ反応しません。

どのような値を入力しても問題ありませんが、必ず2回失敗します。

 

失敗すると、次のようにテキストが変化します。

入力する内容は関係ないので、なにかしら入力した状態でログインボタンを押せば

3回目のログインで成功となります。

 

ログイン成功のテキストが出たら成功とみなす。

これらを踏まえて、みなさんには次の流れのシナリオを作ってもらおうと思う。

せっかくじゃから、ブラウザの起動から全部いこう!

 

  1. ブラウザを起動する(種類は問いませんが、博士はGoogleChromeを使うようです)
  2. テストフォームのページを開く
  3. ユーザ名に任意の文字列を入力する
  4. パスワードに任意の文字列を入力する
  5. ログインに成功したかどうかを判定する
  6. 失敗していたら3に戻る
  7. 成功したらブラウザを閉じて終了する

 

普通に1度だけ動かすなら簡単かもしれませんが、今回はリトライが発生するため

リトライ(2度目)を考慮した動きを考えなければいけません。

ポイントをいくつか示しますので、作成の際の参考にしましょう。

 

 

リトライを考慮した動作

リトライをシナリオに組み込む際に必ず考えなくてはならないのが、2度目以降の操作です。

1度目も2度目も同じ動作で動くように作るのがベストです。

 

逆に、初回と2回目で全く動きが違ってしまうものについてはリトライに向いていないと言えるでしょう。

その場合は素直にメール等を飛ばして一時停止し、人間のチェックを挟むのが無難です。 

今回のシナリオはリトライに適しておる。

安心して作るのじゃ。

 

まずは入力です。

初回はそのまま入力欄をフォーカスして、文字列を入力すれば良いですね。

しかし2回目は前回入力したものが残ってしまっています。

そのまま入力してしまうと、「ロータスくん」が「ロータスくんロータスくん」になってしまったりといろいろと都合が悪いですね。

この問題を解消する方法を考えてみましょう。

 

次に、リトライをあきらめるタイミングも考えましょう。

先にお伝えした通り、リトライとはループです。処理に失敗するとループしますが、失敗し続けてしまう場合を想定しなければいけません。

無限ループと同じことになるからです。

リトライをするとはいえ、どこかでループを抜け出す措置を講じておきましょう。

 

ヒントはこんなところじゃな。

次回は一緒に作っていこう!

それまでに自力でクリアに挑戦してみてほしい!

うーん・・・2回目を考慮か。

ループのときを思い出せばなんとかなるかも・・・

ふぉっふぉっふぉ。存分に悩むのじゃ!

それが明日の力となる!

くっそー博士め!必ず倒してやる!

趣旨変わっとらんか・・・?

関連記事こちらの記事も合わせてどうぞ。

最近の記事

カテゴリ

PAGETOP