SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Automation Anywhere -【A360】初めてのBot作成 vol.10 ランダムに表示される子画面への対応

RPA
2022.05.18

みなさん、こんにちは。前田です。

回までは、実際のCSVから値を入力していく処理の部分をご紹介してきましたが、

今回は最後の仕上げとして、ランダムに出現する子画面への対応についてご紹介します。

Let's RPA!!

※本記事はAutomation 360 v.23 (Build 11513) 時点での情報です。


□目次

  1. ランダム子画面の種類
  2. 子画面への対処
    1. 指示文の取得
    2. ボタンの判定
    3. ボタンの押下
    4. 子画面の判定と作成したアクションの移動
  3. まとめ

1.ランダム子画面の種類

今回対応する、RPA Hackathonhttps://www.rpahackathon.co.uk/Level1で表示される

ランダム子画面には以下のような種類が存在します。

子画面3.PNG子画面1.PNG子画面6.PNG子画面2.PNG子画面4.PNG子画面5.PNG

上記子画面を分類すると、以下の3種類に分類できます。

 1.ボタンのラベルが指示文(GOOFY、OSWALD)と合致しているかどうかを判定し、ボタンクリック OR 子画面を無視して閉じる

 2.ABCのボタンの中から、指示文と合致しているボタンを押下

 3.OKまたはキャンセルのボタンの中から、指示文と合致しているボタンを押下

では、それぞれの種類の子画面に対処するために、実装を行っていきましょう。

 

2.子画面への対処

前回までのBotと同じBotに処理を追加していきます。

子画面への対処を行うそれぞれの方法を詳しく見てきましょう!

 

 2-1.指示文の取得

子画面5.PNG

今回対応する子画面の指示文を見てみると、すべて「Click the button with the label XXX」という指示文になっていることがわかります。

なので、まずはこの「Click the button with the label XXX」部分を取得した後に、

「XXX」の部分を抽出していきたいと思います。

 

まずは、子画面が出ている時に「レコーダー」パッケージ「キャプチャ」アクションで、指示文を取得していきます。

指示文キャプチャ.PNG 

 

取得したオブジェクトのプロパティ一覧を見てみると、「HTML InnerText」に指示文の内容が入っていることがわかります。

InnerText1.PNG

 

そのため、「オブジェクトに実行するアクション」で、「プロパティを取得」を選択し、「プロパティ名」に「HTML InnerText」を入力し、

「結果を変数に保存」で、任意の文字列変数に「HTML InnerText」内の指示文を保存します。

※今回は「子画面指示文」という名の文字列変数を作成して指定

指示文キャプチャオプション.PNG

子画面指示文.PNG

 

次に、取得した指示文から「XXX」の部分を抽出していく作業を行います。

使用するアクションは、「文字列」パッケージの「テキストを抽出」アクションです。

 

先ほど取得した指示文の中の、「Click the button with the label 」より後ろの値を抽出していきます。

「元の文字列」に先ほど取得した指示文の変数を指定し、「文字を取得」で「以前」を選択します。

「テキストの後に開始」に、子画面からコピーした「Click the button with the label 」を入力し、ここで指定した文字より後ろの文字列を抽出します。

「抽出したテキストをカット(空白スペースを削除)」にはチェックを入れておき、

「出力を変数に代入」で先ほど取得した指示文の変数を指定し、この変数の中身を上書き(再代入)します。

テキストを抽出1.PNGテキストを抽出2.PNG

 

これで、指示文「Click the button with the label XXX」の「XXX」の部分のみを抽出することができました。

 

 2-2.ボタンの判定

次に、ボタン操作です。

今回の子画面では、指示文内「XXX」に合致するボタンを押下する、という動きだけではなく、

「指示文に合致するボタンがない場合、ボタンを押さずに子画面を閉じる」という動きが必要となってくるため、

まずは指示文に合致するボタンがあるかどうか?を判定しなければなりません。

 

なので、まずは判定を行うアクションを挿入していきます。

判定を行うアクションパッケージといえば、「If」パッケージですよね。

まずは、「If」パッケージ「If」アクションを挿入していきましょう。

 

条件には「レコーダー」の「オブジェクトが存在します」を選択し、

「アプリケーション」または「ブラウザ」からRPA Hackathonのページを選択、

「オブジェクトをキャプチャ」から子画面上にあるボタンをキャプチャします。

※複数ボタンがある子画面の場合でも、まずは一つのボタンをキャプチャしてください。

Ifアクション.PNG

 

ボタンキャプチャ.PNG

 

キャプチャを行って、「オブジェクトのプロパティ」一覧を見てみると、「HTML InnerText」にボタンのラベル名が入っていることがわかります。

ここをチェックし、オブジェクトの検索時に検索対象とするプロパティに指定します。

InnerText2.PNG

 

一方で、「DOMXPath」や「Path」はボタンの位置も検索対象としてしまうので、チェックを外します。

「HTML InnerText」にチェックを入れ、「DOMXPath」と「Path」のチェックを外したあとの検索対象の「オブジェクトのプロパティ」は以下となります。

プロパティ一覧.PNG

  

そして、ここからが大事なポイントになります。

今回チェックしたいのは、「指示文に書いてあるXXX」と「ボタンのラベル」が一致するかどうかですので、

「ボタンのラベル」の要素である、「HTML InnerText」の値を、「指示文に書いてあるXXX」に変更します。

「指示文に書いてあるXXX」は、2-1で抽出して変数に格納していますので、「HTML InnerText」に対象の変数を指定してあげます。

プロパティ変更.PNG

 

これで、「子画面上に指示文内XXXに対応するボタンが存在する」場合の判定を作成することができました。

このIfアクションの中に、「子画面上に指示文XXXに対応するボタンが存在する」場合の処理を記載します。

 

一方で、「子画面上に指示文XXXに対応するボタンが存在しない」場合の判定も作成しなければいけません。

「上で作成した判定に合致しない=ボタンが存在しない場合」ということになりますので、

「If」パッケージの「Else」アクションを挿入します。

これで、「Else」アクションの中には、「子画面上に指示文XXXに対応するボタンが存在しない」場合に実行される処理を記載できます。

If-else.PNG

  

 2-3.ボタンの押下

次は、指示文に記載の「XXX」に合致するボタンを押下する処理を、先ほど記載したIfアクションの中に入れていきます。

「レコーダー」パッケージ「キャプチャ」アクションを使用してボタンをキャプチャしていきますが、

「2-2.ボタンの判定」で「If」アクションの「レコーダー」条件で設定した内容と同じようにキャプチャし設定していきます。

 

まずは、「アプリケーション」または「ブラウザ」でRPA Hackathonのページを指定し、ボタンをキャプチャします。

※複数ボタンがある子画面の場合でも、まずは一つのボタンをキャプチャしてください。

キャプチャ.PNG

 

次に、「オブジェクトのプロパティ」で「DOMXPath」と「Path」を検索対象のチェックから外し、「HTML InnerText」を検索対象にするためにチェックします。

そして、「HTML InnerText」の値を、指示文から抽出した変数に変更します。

プロパティ変更2.PNG

 

そして、「オブジェクトに実行するアクション」で、「左クリック」または「クリック」を選択します。

アクション.PNG

これで、指示文に記載の「XXX」に合致するボタンを押下する処理を作成することができました。

 

では、今度は指示文に記載の「XXX」に合致するボタンが存在しない場合の処理を作成していきます。

先ほど作成したElseアクションの中に、「レコーダー」パッケージ「キャプチャ」アクションを挿入します。

Else.PNG

 

「アプリケーション」または「ブラウザ」でRPA Hackathonのページを指定し、子画面上部の「閉じる」ボタンをキャプチャします。

「オブジェクトに実行するアクション」で「左クリック」または「クリック」を選択し、アクションの設定は完了です。

閉じる.PNG

 

これで、指示文に記載の「XXX」に合致するボタンが存在しない場合の処理も完了しました。

 

 2-4.子画面の判定と作成したアクションの移動

今回作った処理を、前回までに作成したBot内の、「ループ」処理の最初に挿入することで、

ページ遷移後に表示される子画面の対応を行うことができます。

ただし、「ランダムで出現する子画面が出ていないとき」は、処理を行わないようにしないといけません。

 

子画面が出ているかどうかは、共通のタイトルが存在するかで判定を行っていきましょう。

子画面タイトル.PNG

 

その判定を行うために、「ループ」処理内の最初に、「If」アクションを挿入します。

Ifアクションを挿入したら、条件には「レコーダー」の「オブジェクトが存在します」を選択し、

「アプリケーション」または「ブラウザ」でRPA Hackathonのページを指定し、子画面上部の「HACKATHON VINCIX GROUP」をキャプチャします。

タイトルキャプチャ.PNG

 

「オブジェクトのプロパティ」はそのままで、保存をしたら、

作成したIfアクションの中に今回作成した処理を全て移動させます。

アクション一覧.PNG

これで、ランダムに表示される子画面がポップアップされた場合の対応は完了です!

 

3.まとめ

いかがだったでしょうか。今回でこの「初めてのBot作成」シリーズは終了となります。

オブジェクトのキャプチャ、ループやIf、Excelの操作など、基本的な操作を触って実装することができましたでしょうか。

実際に作成したBotで、RPA Hackathon Level 1を実施してみて、どうやったらより早く実行できるか?など、

更なる工夫を自分で加えてみるのも次のステップに繋がります。

それでは、またお会いしましょう!

著者紹介

先端技術推進統括部
RPAビジネス推進部
前田 由委