23 RPAチャレンジ(DS)

巷で話題の(話題でないかも)RPAチャレンジのサイトを知っていますか?
このサイトでは、疑似的に顧客データの登録処理をすることができます。そして、その正確さと速度を判定してくれます。

※本来は UiPathでチャレンジするためのサイトです。


顧客データはExcelファイルに10件用意されていて、それを1件ずつWebページに入力して登録していきます。


このサイトの面白いところは、[登録]ボタンをクリックするたびに入力位置が変わるということです。しかも、テキストボックスのname属性やid属性まで変わるので、ロボットに入力位置を特定させるには工夫が必要です。



では、さっそくチャレンジしてみましょう!
ここでは、Design Studio(以下 DS)で(DAを使わずに)ロボットを作っていきたいと思います。


【1】顧客データのダウンロード

RPAチャレンジのサイトから、顧客データのExcelファイルをダウンロードして任意の場所に保存します。

《 RPAチャレンジのURL》

  http://rpachallenge.com/?lang=ja



【2】セッション変数について

このサイトのチャレンジを行うためには、セッション変数を使う必要があります。

なぜなら、DSで「Excelの行繰り返し→テキストボックス入力 →[登録]ボタンクリック」というワークフローを作成すると、2回目の繰り返しのときにも1回目と同じページが表示されてしまい、10件登録しても結果画面にたどり着かないからです。(それが見たいのに!)

そこで、登場するのがセッション変数です。この変数を使って[セッションの保存]→[セッションの復元]を行えば、繰り返し処理の中でも正常に次ページが表示されるようになります。つまり、10件目の登録が完了したら結果画面が表示されるようになるのです!

 ※より詳しく知りたい方は「Kofax Kapow へようこそ > リファレンス > Design Studio > ステップ アクション > セッションの保存」を参照してください。


【3】スクリーンショットについて

DSは内蔵ブラウザでWebページを表示するので、(デザインモード実行でなければ)実行中や実行後のWebページを見ることができません。つまり、結果画面も見られないのです。 Σ(゚д゚lll)ガーン

そこで、結果画面を[スクリーンショットを抽出]でImage型の変数に抽出→Image型の変数を[ファイル出力]して、結果画面をPNG(JPGでもOK)ファイルで確認できるようにしておきます。

 ※より詳しく知りたい方は「Kofax Kapow へようこそ > リファレンス > Design Studio > ステップ アクション > スクリーンショット抽出」を参照してください。


【4】ロボットを作成する

このチャレンジは、既出のアクションだけでクリアできます。まずは自力でやってみてください!

ヒントは、[名前付きタグ]。それが全てといっても過言ではない!


【4-1】ロボットを新規作成して変数を追加する

(1)新規または既存のプロジェクトに、ロボットと変数を作成します。


(2)そして、ロボットに変数を追加します。


【4-2】顧客データを抽出する

(1)ロボット・ビューに新しいステップを追加し、[ファイルシステム]→[ファイル読込]アクションを設定します。読み込む[ファイル名]は、ダウンロードした顧客データファイル(challenge_ja.xlsx)を指定します。


(2)ブラウザ・ビューに表示されている顧客データを右クリック→[開く(読み取り専用)]をクリックします。


(3)次に、RPAチャレンジのサイトを開きます。[ロード先]は[新しいウィンドウを開く]を選択してください。

《 RPAチャレンジのURL》

  http://rpachallenge.com/?lang=ja


(4)そして、RPAチャレンジのページにある[開始]ボタンをクリックします。


(5)ここから顧客データを読み込んでいきますので、ブラウザ・ビューの顧客データのタブを右クリック→[現在のウィンドウとして設定]をクリックします。


(6)次に、顧客データの左上の[全セル選択ボタン]を右クリック→ [ループ]→[選択中の行をループ]→[最初の行を除外]をクリックします。


(7)そして、顧客データを抽出して変数にセットしていきます。


(8)セットした内容は、変数・ビューで確認しておきましょう。



(9)そして、長々とした抽出ステップをグループ化します。これで、顧客データの抽出処理が出来上がりました。


【4-3】名前付きタグを設定する

ここから、抽出した顧客データをWebページに入力していきます。注意しなければならないのは、このサイトはページ毎に入力位置が変わるしくみになっているということです。

そこで、位置が変わってもテキストボックスを正しく検出できるように、それぞれのラベル(名前、苗字、会社…など)に[名前付きタグ]を設定して、そのタグ位置を元にしてテキストボックスを特定することにします。

 ※名前付きタグについては >>>>> こちら


(1)まずは、RPAチャレンジのページを[現在のウィンドウとして設定]します。


(2)そして、それぞれのラベル部分を[名前付きタグとして設定]していきます。


(3)[名前付きタグ設定]ステップは、そのままではラベルの表示位置が変わったときに検出できなくなってしまうので、[ファインダー]を修正します。


(4)そして、[タグ名]を項目名に合わせておきます。(下図の場合は「苗字」)


(5)すべてのラベルを[名前付きタグとして設定]できたら、グループ化しておきましょう。

 ※はじめに作った[名前付きタグ設定]ステップをコピペして、1.ステップ名、2.タグパターン、3.タグ名、を変更すると楽ですよー。



【4-4】テキストボックスに入力する

(1)Webページのテキストボックスを右クリック→[変数からテキストを入力]→(入力する変数)をクリックして、[テキストを入力]ステップを作成します。


(2)次に、[テキストを入力]ステップの[ファインダー]を修正します。


《修正前》

[検索範囲]が入力位置の変更に対応できていないので修正が必要。また、[属性名]と[属性値]について、name属性やid属性はページ毎に変更されるので修正が必要。


《修正後》

[検索範囲]を[名前付きタグの後]に変更し、[属性名]と[属性値」はテキストボックスの<input type=”text”>をもとに値を設定。


(3)すべてのテキストボックスに、上記(1)~(2)の方法でテキストを入力します。そして、長々としたステップをグループ化しておきましょう。




(4)次に、[登録]ボタンをクリックするステップを作成します。


(5)そして、[クリック]ステップの[ファインダー]を修正してください。


《修正前》


《修正後》


【4-5】セッションの保存と復元

ここで、先に述べた[セッションの保存]と[セッションの復元]ステップを追加します。が、その前に、せっかくなのでセッション変数を使用しなければどうなるのかを見てみましょう。

まず、エンドポイントをクリックします。そして、繰り返しのイテレーションを進めると、、、、おやっ!おやおやっ!![Round 2]のままですっ!!(しらじらしい)


このままでは結果画面にたどり着かないので、次の手順でセッションの保存と復元を行っていきましょう。


(1)まず、[開始]ボタンクリック後に、[セッションの保存]ステップを追加します。


(2)次に、[名前付きタグ設定]ステップの前に、[セッションの復元]ステップを追加します。


(3)最後に、[登録]ボタンクリック後に、[セッションの保存]ステップを追加します。


これで、繰り返しのイテレーションを進めると[Round 2]→[Round 3]…というふうにカウントアップされるようになりました。


【4-6】スクリーンショットの保存

(1)スクリーンショットを保存するのは10件目の登録が完了した後なので、[登録]ボタンクリック後に[トライステップ]と[値判定]ステップを追加します。

[値判定]ステップの[条件]は「itereation() < 10」を入力、[エラー処理]は[次の代替手段を試行]を選択してください。



(2)次に、[トライステップ]のブランチの下側に、[抽出]→[スクリーンショット抽出]ステップを追加します。

[パディング]は[ページ全体]を選択、[変数]はImage型の変数[スクショ]を選択してください。


(3)そして、[ファイル出力]ステップを追加し、スクリーンショットをPNGファイルとして保存します。[ファイルコンテンツ]は変数[スクショ]を選択、[ファイル名]は任意のファイル名を入力してください。


(4)最後に、[その他]→[エラー生成]ステップを追加して、[エラー処理]は[ループ終了]を選択します。

 ※強制的にループを終了させることができます。



【5】ロボットを実行する

(1)デバッグモードでロボットを実行して、処理が終了したら結果画面の画像を確認してください。



RPAチャレンジのサイト、面白いですよね!

今回はDesign Studioの基本的なステップだけで作りましたが、実はもっと速度UPできる方法があるんです!

DA Editor上でChromiumというウェブブラウザエンジンを使って作るんですが・・・・長くなるのでここではやめときます。。

でも、近いうちに紹介したいなーと思っています (*’ω’*)