【Automation Anywhere】Web操作でどちらを使う? Object Cloningコマンド vs Web Recorderコマンド

# 概要
Automation Anywhere (AA) には、Webページ上でオブジェクトを解析して操作を行えるコマンドが2種類あります。ひとつは**Object Cloningコマンド**と呼ばれる、Smart Recorder (万能型)から生成されるコマンドです。もうひとつは**Web Recorderコマンド**で、Web Recorder (Web特化型)から生成されるコマンドです。Webベースのアプリケーションの操作にはどちらでも使えますが、どっちを使えばいいのか迷いますね？この悩みを解決するべく検証してみました。

|Object Cloningコマンド<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/749700dc-583d-0373-e7be-f366a3ed9d51.png)<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>|Web Recorderコマンド<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/58d2347d-728c-b422-674d-aebdc64c0ac9.png)|
|:--|:--|


# 結論
結論から先に述べると、通常のHTMLだけのWebページであれば、現時点では**Web Recorderコマンド**を利用しておくのが無難だと思います。Silverlight, Java, Flexなどがからむ複雑なページの場合はSmart Recorderが良い場合もあります。両者の強み、弱みを簡単に述べておくと以下の通りとなります。

### Web Recorder

* 強み
    * **正確性が高い:** Web特化型のコマンドであるので、必要なWebコントロールを正しく認識できる。(例: Salesforceでは、検索ボックスは`INPUT`タグで書かれていたが、Web recorderでは正しく補足できた。Smart Recorderではまわりの`DIV`タグが認識されてしまい入力がうまくいかなかった)
    * **繰り返しデータを取得する特別なコマンドがある:** Extract Data、Extract Tableコマンドにて、表形式や表以外の形式の繰り返しパターンを補足してCSVにエクスポート可能。ページが複数ページにわたる場合も、ページをめくるコントロールを認識してページめくりが可能。他にもFind Broken Linksコマンド、Extract Sourceコマンド、Navigate URL/Search by Caption/Go Back/Execute JavaScript Functionなど、Web特化型ならではのコマンドがある。
    * **スピードが速い**: ベンチマークをしてみると、Object CloningのDOMXPathを使うよりも数倍の速さがあります。特に繰り返し処理を行う場合は差がかなり大きく出てきます。
* 弱み
    * **Internet Explorerでしか動かない:** Web Recorderコマンドは常にIEのみで動きます。EdgeやChromeなど他のブラウザーでも動けばばっちりなのですが、今後はあまりここに投資されないかもしれませんね。
    * **フィールドへの文字入力でうまくいかない場合がある:** 入力したいコントロールへのマウスクリックを直前に入れるなど、癖を把握して工夫すれば乗り切れるものが多いですが、キーボードシミュレーションができればそれに越したことはありません。

### Object Cloning

* 強み
    * **様々なテクノロジーを利用してHTML以外のコントロールも操作可能:**HTML以外にもSilverlight, Java, Flexなどのコントロールが埋まっているページであっても、同じような操作でコントロールの捕捉と操作が可能です。テクノロジーの違いが判らないユーザー部門にもやさしい作りです。
    * **様々なブラウザー上で動作する:** 専用アドインを各ブラウザーにインストールすることで、IE以外にもChrome, Edgeといったブラウザー上でObject CloningコマンドでWebページのコントロール解析が可能になります。
* 弱み
    * **オブジェクトの捕捉に癖がある:** HTMLタグがネストしている場合に、例えばその中のエディットボックスを補足したいと思った場合に思い通りの階層のものを補足してくれない場合があり、コツが必要になる場合があります。
    * **繰り返しデータの取り扱いは利用できない:** 繰り返しデータの取得はサポートされていません。

ちなみに、余談ですが両方のコマンドともうまく動作するLaunch Websiteコマンドというものがあり、IEだけでない様々なブラウザーでURLを開くことが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/41d185bd-811f-f1db-28e7-2dca3a327f3d.png)

さらに余談ですが、ブラウザー連携にはアドインが必要になりますが、Clientの「ツール」-「オプション」の「プラグイン設定」で管理されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/64179dcc-3191-4854-dafd-ed238dfbdec8.png)




# 資料の記載

[‘RECORD’ Is Critical For Enterprise Grade RPA](https://www.automationanywhere.com/blog/stories-from-the-front-lines/record-is-critical-for-enterprise-grade-rpa) - Automation Anywhere Blog

>* **Smart Recorder** captures the UI controls/objects for a variety of frameworks. This allows it to be more resilient to automation obstacles such as screen resolution changes. It offers more flexibility while recording tasks that use different technologies – Silverlight, Java, html, and Flex to name a few. It can also be used to record tasks for legacy as well as web-based applications. 
>* **Web Recorder** is used to automate pattern-based tasks for web- based applications, e.g. automatically extracting web data spread across multiple pages with just a few clicks. 

Smart Recorderは様々な仕組みを利用してUIコントロールやオブジェクトを識別します。Silverlight、Java、HTML、Flexなど幅広いテクノロジに対応しているのが特徴。Web Recorderは複数ページにまたがるパターンベースのデータを抜き出すなど、用途特化型？

[Automating Process Portal tasks with IBM RPA](https://www.ibm.com/support/knowledgecenter/en/SSMGNY_10.0.0/com.ibm.wbpm.rpa.main.doc/topics/bpm_rpa_portal.html)[^1] - IBM Robotic Process Automation, V10.0.0 Knowledge Center

>**Smart Recorder**
>Use this recorder as your preferred recorder for all tasks, including Process Portal tasks. Because the Smart Recorder interacts directly with an object, it isn't affected by the screen resolution or the size and position of a window. This bot has the following characteristics:

>* It captures the user interface operations as a set of Object Cloning commands.
>* It uses the DOM structure to locate web elements, such as the input field in a coach view.
>* It adapts to display variations and window sizes.
>* It tolerates minor layout changes in coaches, such as changing the field labels, adding new coach views, and moving existing ones around.

>**Web Recorder**
>Use this recorder to automate pattern-based tasks for web applications, such as automatically extracting web data across multiple pages and filling out forms. This bot has the following characteristics:

>* It uses the DOM structure to locate web elements, such as the input field in a coach view.
>* It enters text in an input field as the entire string instead of emulating the user's keystrokes. As a result, 
browser events that are needed to process the text in a coach view are not triggered. For example, the events that are needed by the On change event of a Text coach view are not triggered and the bound variable is not updated.

>Because of the issues that can arise when recording text in input fields, the Web Recorder is not recommended for recording Process Portal tasks.

オブジェクトの解析には両方ともDOMを利用している。Smart Recordingは多少のレイアウトの変更は吸収が可能。Web Recorderはフィールドへの文字入力でキーボードシミュレーションをしないので、追加のブラウザーイベントが必要になる場合がある。

[^1]: IBM RPAはAutomation AnywhereのOEM。