25 組込Chromium(その2)

(前回からのつづき)


【3-5】ラベル名を判定する

(1)ラベル名を抽出できたら、ラベル名によって入力内容を変える処理を作成していきます。

[ラベル名抽出]ステップの次の丸印を右クリック→[Conditional]をクリックしてください。

そして、[Conditional]ステップを開いてマウスを合わせると緑色の[+]ボタンが表示されるので、それをクリックして条件を追加していきます。


(2)[Conditional]ステップには、まず、「ラベル名が〇〇のとき」という条件を作成していきます。


《作成する条件》

1. =ラベル名 == "苗字"
2. =ラベル名 == "名前" 
3. =ラベル名 == "会社名"
4. =ラベル名 == "部署"
5. =ラベル名 == "住所"
6. =ラベル名 == "メールアドレス"
7. =ラベル名 == "電話番号"

[+]をクリックして条件を追加していきましょう。

 ※入力ボックスの左端の[=]はボタンになっています。[=]有りのときは「式」、[=]無しのときは「文字列」として認識されます。


[Conditional]ステップの条件部分が完成すると、下図のようになります。


(3)[ステップイントゥー]ボタンをクリックして、ラベル名の条件判定が正常に行われることを確認してください。


下図の場合、[入力エリア]のラベル名は「メールアドレス」と判定されたことがわかります。


【3-6】テキストボックスに値を入力する

ここから、ラベル名に合った[IN_顧客データ]の項目をテキストボックスに入力していきます。


(1)黄色い丸印をクリックしてから、[入力エリア]内のテキストボックスを右クリック→[フィールドにテキストを入力]→[変数から]→[IN_顧客データ:顧客データ]→対象のデータ(下図の場合は[メールアドレス:Text])をクリックします。


(2)[Input text from]ステップが追加されたら、テキストボックスの検出条件を修正します。


[Location Found]>[Component]>[Inner Component]の修正

《修正前》 INPUT[der_rendered="y"]
《修正後》 INPUT[type="text"]


(3)[Input text from]ステップの名前をわかりやすい名前(下図の場合は「メアド入力」)に変更します。


(4)上記(3)のステップをコピー&ペーストして、ステップ名とステップ内のアクション[Input Text]>[Text]を変更していきます。



(5)これで、ラベル名を判定してラベル名に合ったデータをテキストボックスに入力する処理が完成しました。

画面上の[リセット]ボタンをクリックしてから、[ステップオーバー]ボタンをクリックしてください。



ラベル名に合ったデータがテキストボックスに入力されたでしょうか。


(6)これで、データ入力処理は完成です。[保存]ボタンをクリックしてから DA Editorを閉じてください。

DSに戻ったら、[Desktop Automation]ステップの名前を「データ入力」に変更します。



【3-7】登録ボタンをクリックする

(1)[データ入力]ステップの後に、[Desktop Automation]ステップを追加します。そして、[ワークフロー]の[編集]ボタンをクリックしてDA Editorを開きます。


(2)DA Editorが開いたら、RPAチャレンジのページの[登録]ボタンを右クリック→[クリック]→[Left]をクリックします。



(2)[Left Click]ステップが追加されたら、[登録]ボタンの検出条件を修正します。


[Location Found]>[Component]の修正

《修正前》 INPUT[class="btn btn-default"][der_rendered="y"]
《修正後》 INPUT[type="submit"]


(3)そして、[ステップオーバー]ボタンをクリックして[登録]ボタンクリック処理を実行してください。


(4)すると、RPAチャレンジのページが[Round 2]に遷移します。そして、[保存]ボタンをクリックしてDA Editorを閉じてください。

 ※DAワークフローは、長くなりすぎるとデバッグやメンテナンスがしにくくなるので、処理毎に分けて作ってください。


(5)DSに戻ったら、[Desktop Automation]ステップの名前を「登録ボタンクリック」に変更します。


【3-8】結果画面(スクショ)の抽出

(1)無効化していた[RPAチャレンジ開始]ステップを有効にして、最初のステップをクリックしてから、[すべて保存]ボタンと[更新]ボタンをクリックします。

 ※[更新]ボタンをクリックすると、DA Editorで開いていたページが閉じます。


(2)次に、イテレーションを10まで進めてからトライステップをクリックしてください。


(3)そして、トライステップの代替手段の[Write File]の前に、[Desktop Automation]ステップを追加します。

[出力マッピング]には変数[スクショ]を設定し、[ワークフロー]の[編集]ボタンをクリックしてDA Editorを開きます。

 ※変数[スクショ]には、結果画面の画像データが返ってきます。


すると、結果画面が表示されています。


(4)ここから、結果画面の画像を抽出していきますが、その前に。

まず、ワークフロー画面の[Output]を見てください。[Binary]という値が入っています。これは、DS側の[出力マッピング]で設定した変数[スクショ]のデータ型になっています。

そして、[Return]はエラーになっています。ここには、 DS側の[出力マッピング]で設定したデータ型の値(ここでは画像データ)を返さなければなりません。

ということで、抽出した画像データを入れる変数[OUT_スクショ]を作る→結果画面を変数[OUT_スクショ]に抽出する→[Return]に変数[OUT_スクショ]を返す、というワークフローを作成していきましょう。


(5)[Variables]に「OUT_スクショ」という変数を作成し、データ型は[Binary]を選択します。

そして、[Return]>[Values]には[OUT_スクショ]を入力しておきましょう。

これで、画像データを格納する変数の宣言と、その画像データをDS側に返す処理ができました。あとは、結果画面を抽出するだけです。


(6)コード・ビューのwindowタグを右クリック→[画像を次へ抽出]→[OUT_スクショ:Binary]をクリックします。


すると、[Extract Image]ステップが作成されます。


(7)次に、[ステップオーバー]ボタンをクリックして、[Return]ステップの後の丸印まで処理を進めてください。


すると、画面右下の[ワークフロー状態]の[Variables]>[OUT_スクショ]と[Output]に、抽出された画像が表示されます。

これで、結果画面の抽出処理は完了です。 [保存]ボタンをクリックしてから DA Editorを閉じてください。


(8)DSに戻ったら、[Desktop Automation]ステップの名前を「スクショ抽出」に変更します。

これで、ロボットは完成です!・・・・いや、違うな、まだだな (゜.゜)


【3-9】待機時間を追加する

ロボットの処理速度はとても速く、画面が遷移する前に次の処理を行ってしまうことがあります。

今回の結果画面の抽出がまさにそれ。結果画面が表示される前に、結果画面の抽出処理を実行してしまうのです。。

みなさんの環境で同じ結果になるかどうかわかりませんが、完成したロボットをこのまま実行してみることにします。


(1)最初のステップをクリックしてから、イテレーションを「1」に戻して、[すべて保存]ボタンと[更新]ボタンをクリックします。(保存&リフレッシュ!)


(2)そして、デバッグモードで実行後に結果画面の出力ファイルを確認すると・・・・


あららー。これは結果画面じゃないですねー。まだ[登録]ボタンがクリックされていません。


(3)こういったことを回避するための確実な方法は、「結果画面が表示されたら画像を抽出する」ですが、ちょっと大変なので次回にしたいと思います。

ということで、ここではDSの[Wait]ステップを使います。[秒]は「2.0」くらいで。(適当)


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

(1)はじめに、デザインモードで最初のステップをクリックしてから[更新]ボタンをクリックして、DA Editorで起動しているRPAチャレンジのページを閉じます。(リフレッシュ!)

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


結果画面が見れました!

そして、処理速度は「16081ミリ秒」。前に作ったDSバージョンは「54845ミリ秒」だったので、処理速度大幅UPです。素晴らしーっ!!


次回は、[スクショ抽出]ステップで[Extract Image]>[Location Found]を使って(DSの[Wait]ステップを使わずに)結果画面を出力する方法を紹介できたらなーと思います。

あと、[RPAチャレンジ開始]ステップでは、[Guarded Choice]>[Location Found]を追加して、既にページが開いているときは一旦閉じる処理を追加したいなー。

それから、いちいちリフレッシュしなくても連続実行できるように、結果画面の抽出後にページを閉じる処理も追加したいなー。(あ、でも、上記の一旦閉じる処理があれば不要かな)

というわけで、まだまだ改良の余地アリアリですが、とりあえずRPAチャレンジの結果画面までたどり着きましたねー。めでたしめでたし (*’ω’*)