【Automation Anywhere】Object Cloning (Recorder:Capture) で取り込まれるオブジェクト情報の中身は？


# 概要
Automation Anywhere v11.3.xのスマートレコーディング機能で生成されるコマンド「**[Object Cloning](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/commands/object-cloning-command.html?_LANG=jpjp)**」にキャプチャされる情報には、様々な方法で取得された**オブジェクト情報、座標情報、画像情報**があります。レコーディングされた情報のデバッグを行う際に気になってくるのが、[オブジェクト情報でどのような情報が取れて](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/commands/using-object-play-mode.html?_LANG=jpjp)いて、どこをどのように触るのがよいのか、ということでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/0b466725-fd2b-e97f-6a24-d12c7fc70444.png)

>**メモ**: A2019ではObject Cloningコマンドは「**[Recorder:Capture](https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-client/bot-creator/commands/cloud-recorder-command.html?_LANG=jpjp)**」アクションに取り込まれています。ここで取得できるオブジェクト情報もv11.3.xと同様です。ただし、使用するテクノロジーの選択(決め打ちになる)や、座標情報、画像情報の取り込みは行われません。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/c2e11335-d098-477c-b6d1-bd9f232591c9.png)

この記事では、クローニングする(つまりObject Cloningコマンドで属性を分析してキャプチャする) 対象のオブジェクトの種類と得られる属性について詳しく見てみましょう。

# 使用するテクノロジーと対象オブジェクトの種類

### 使用するテクノロジー
先のObject Cloningダイアログボックスの「Select Technology」の選択肢より選択できます。

* **Default (デフォルト)**: オブジェクトのキャプチャに使用するテクノロジーを自動的に検出しようと試みます。使用されるテクノロジーはLegacy, Standard, Advanced, Advanced-WPFのいずれかになります。
* **Legacy (レガシー)**: レガシー テクノロジーを使用してオブジェクトを検出し、キャプチャします。
* **Standard (標準)**: [MSAA](https://ja.wikipedia.org/wiki/Microsoft_Active_Accessibility) テクノロジーを使用してオブジェクトを検出し、キャプチャします。
* **Advanced (高度、もしくは詳細)**: [UIAutomation](https://ja.wikipedia.org/wiki/Microsoft_UI_Automation)テクノロジーを使用してオブジェクトを検出し、キャプチャします。
* **Advanced-WPF (高度、もしくは詳細-WPF)**: [WPF アプリケーション](https://ja.wikipedia.org/wiki/Windows_Presentation_Foundation) テクノロジーおよび [UIAutomation](https://ja.wikipedia.org/wiki/Microsoft_UI_Automation)テクノロジーを使用してオブジェクトを検出し、キャプチャします。

ここで出てくる[MSAA](https://ja.wikipedia.org/wiki/Microsoft_Active_Accessibility)、[UIAutomation](https://ja.wikipedia.org/wiki/Microsoft_UI_Automation)というのは、WindowsのOSについているアクセシビリティAPIと呼ばれる仕組みで、画面内のオブジェクトを要素分解して属性を返してくれるAPIです。WPFもモダンなWindowsアプリケーションで使われるUIサブシステムで同様の仕組みを持ちます。

### 対象となるオブジェクトの種類
対象となるUIオブジェクトはいろいろな種類に対応しています。そして、オブジェクトの種類によって取れる情報も違います。手元で試せるものについて、どういう情報が取れて、どれがオブジェクトを検出する際にデフォルトで使われるのかについても見てみます。

まず、Object Cloningダイアログボックスの真ん中にある「検索条件を選択:」の右側のアイコン (![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/44211bdb-6d2b-243f-66cc-6529214fa94d.png)) をクリックすると、検索条件となるオブジェクトの詳細属性の一覧が表示されます。

この中で双眼鏡マーク (![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/bc330705-e8d0-e5d9-fe1f-69e301e904bb.png)) がついているものが検索対象として使われます。双眼鏡マークをクリックすることでON/OFFを切り替えることができます。

>**注:**
>オブジェクトの種類を正しく認識するには、追加のプラグインをインストールする必要がある場合があります。v11.3.xでSilverlight/Flex/Javaアプリケーションを専用のモードで認識するには、`C:\Program Files (x86)\Automation Anywhere\Enterprise\Client\AAPluginInstallation.exe`の場所にあるプラグインインストーラを**管理者モードで実行**して、必要なプラグインをあらかじめインストールしてください。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/d9ed20df-2e1c-92f8-4922-0c8281e930ac.png)
>これらのプラグインがインストールされていない場合は、通常のWindowsアプリケーションとして標準テクノロジーでオブジェクトを検出します。ただし、オブジェクトの種類に固有の追加の属性が取得できません。

# 取り込まれるオブジェクト情報
これは、利用するテクノロジーと対象となるオブジェクトの種類によって異なってきます。

オブジェクトの種類毎に見てみることにすると、Webアプリケーション/HTMLページと、それ以外のリッチクライアントアプリケーションとで、取得できる属性は大きく異なります。

* **通常のWindowsアプリケーション**
* **.NET・WPFアプリケーション**
* **Microsoft Silverlightアプリケーション:** かつてマイクロソフトがAdobe Flash対抗でリリースしていたWebシステムのリッチクライアント開発テクノロジーです。最近はHTML5に取って替わられ下火になってきています。
* **Javaアプリケーション**
* **Adobe Flexアプリケーション:** Adobe Flashを基盤にしたWebシステムのリッチクライアント開発テクノロジーです。最近はHTML5に取って替わられ下火になってきています。
* **SAPアプリケーション:** v11.3.3以降では[SAP GUI Automationを使ってSAPアプリケーションにも対応](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/commands/using-gui-automation.html?_LANG=jpjp)しています。
* **Webアプリケーション/HTMLページ**


### Legacy/Standard/Advancedテクノロジーで取得できる標準的な属性

**取得できる属性。**★はデフォルトでON。<font color="Red">★</font>はコントロールや取得できた属性の状況によってはデフォルトでON。()括弧付きのものはAdvancedテクノロジーを使ったときにのみ取得可能。☆はAdvancedテクノロジーを使ったときに、追加でデフォルトでONとなる属性。

* (Object ID)☆
* Name<font color="Red">★</font>☆
* Value<font color="Red">★</font>
* Class
* Parent<font color="Red">★</font>
* Type★
* Path★
* Index
* Left
* Top
* Width
* Height
* Description
* State(s)
* Action
* 《使用するテクノロジーやコントロールによって追加の属性の取得あり》

>**注:**Webアプリケーション/HTMLページであっても、上記のテクノロジーを明示的に使っている場合は上記の属性が取得されます。

### SAPテクノロジーで取得できる属性

**取得できる属性。**★はデフォルトでON。

* Control Type★
* Role★
* ConnectionId★
* Left
* Top
* Width
* Height
* Object Id★
* SessionId★
* IsContainerType
* Name
* Action

>**注:**SAPアプリケーションにはDOMXPathもPathもなく、代わりにObjectIdが指定できます。これがDOMXPathに相当するSAP版です。(例: ObjectId=`/app/com[0]/ses[0]/wnd[0]/tbar[0]/okcd`)

### Defaultテクノロジーを使った場合のWebアプリケーション/HTMLページ
標準的な属性は取得されず、代わりに以下のWeb/HTML専用の属性が取得されます。

**取得できる属性。**★はデフォルトでON。

* Path★
* DOMXPath★
* HTML ID
* HTML Name★
* HTML Alt
* HTML Tag★
* HTML Class
* HTML InnerText
* HTML HRef
* HTML Type★
* HTML Value
* HTML ClassId
* HTML Title
* HTML Height
* HTML Width
* HTML Tag Index
* HTML Top
* HTML Left

# 最後に
次回は、取得できる属性のうち、特にPathとDOMXPathのしくみについてみていきたいと思います。

* [Object Cloning (Recorder:Capture) の DOMXPath、Pathによるオブジェクトの指定のしくみ](https://qiita.com/RPAbot/items/e2742a2aaba8608bc0c3)