Power Automate Desktopで、スクロール表示領域外のListItem要素を操作しようとすると失敗するデスクトップアプリがあるかもしれない

# 前提
- Power Automate Desktopについて、操作方法などについての説明は省略しております。ご了承願います。

# 要点
:::note info
- エクスプローラーはスクロール表示領域外のListItem要素をPower Automate Desktopで操作しようとするとエラーが発生した。
- Windows Media Playerではスクロール表示領域外のListItem要素を操作しようとしても操作できる。
- エクスプローラーはスクロール表示領域外のListItemを要素ごと隠し、RPAやプログラムによる自動操作でも見つけることができないようにしている仕様があるかもしれないと個人的に考察している。
- エクスプローラー以外にも同様の仕様のデスクトップアプリがもしあれば、実装を工夫する必要がありそう。
:::

# はじめに
エクスプローラーはスクロール表示領域外のListItem要素をPower Automate Desktopで操作しようとするともしかしてエラーが発生するのではないかと思い、検証をしてみました。
この記事では、実際にエクスプローラーとWindows Media Playerでスクロール表示領域内外それぞれのListItem要素を操作しようとしたときに、どのような挙動になるか検証を行ってみます。
また、その上で個人的な考察を記載します。

# 環境
OS:Windows 10

# 検証
たくさんの仮画像ファイルを用意したフォルダを今回の検証に使用します。
<details><summary>今回使用したフォルダに入れたファイル名リスト(折りたたんでます。)</summary>

```
安東健由.png
安東小都音.png
井垣真次.png
井垣美里.png
浦川成十郎.png
浦川徳子.png
永田ふみ子.png
永田正教.png
永浜幸徳.png
永浜峰.png
越智いずみ.png
越智裕治.png
塩瀬彰男.png
塩瀬智加子.png
河口亜紀子.png
河口和法.png
鎌刈絢友.png
鎌刈由紀.png
萱沼謙一.png
萱沼祐美子.png
岩井紗代子.png
岩井雄一.png
岩瀬多美.png
岩瀬武.png
宮村千鳥.png
宮村忠輔.png
玉井菊.png
玉井到.png
金川貴久.png
金川小紅.png
栗栖伽羅.png
栗栖亘.png
古谷久遠.png
古谷隆.png
江川貴子.png
江川新右衛門.png
江頭志能舞.png
江頭杪.png
高坂ちずる.png
高坂貴理人.png
国岡美智代.png
国岡碧海.png
国本たまき.png
国本春太.png
佐久間伊吉.png
佐久間伊瀬.png
阪野亜紀.png
阪野貴彦.png
三矢孝浩.png
三矢千代子.png
小金丸夏江.png
小金丸銀雅.png
小沢千穂.png
小沢明人.png
松原博康.png
松原稔江.png
上野しずよ.png
上野八五郎.png
植村絢士.png
植村美晴.png
菅紀仁.png
菅瀧.png
西口初穂.png
西口比呂.png
青井史.png
青井庄蔵.png
前野真悟.png
前野蘭.png
曽我鎌太郎.png
曽我君.png
竹本康夫.png
竹本万亀.png
中沢紬.png
中沢勇治.png
長山真寛.png
長山萩.png
鶴田文朗.png
鶴田弥恵子.png
天野啓子.png
天野章人.png
田崎きよ子.png
田崎松葉.png
畠中憲信.png
畠中連.png
板倉珠美.png
板倉重則.png
肥後三香.png
肥後内蔵助.png
斧円.png
斧俊夫.png
平林寛次.png
平林芹.png
米津小都音.png
米津達五郎.png
桝美夏.png
桝裕二.png
蜜田亀造.png
蜜田月江.png
木野村作蔵.png
木野村雪絵.png
柳生渚.png
柳生優心.png
有本雛.png
有本和仁.png
```
</details>

Power Automateで、Windows Media Playerとエクスプローラーのそれぞれの操作対象となるListItem要素を追加します。(それぞれ「有本和仁.png」というファイル名に該当する要素)
![要素_WMP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/b62343c6-57b8-5dbe-8e9c-f969bcf7d9b8.png)
![要素設定_WMP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/11f3fc7c-8d0a-3ecc-8e9c-896919538919.png)
![要素_explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/34ee585c-23b5-05b2-3606-a4e701ce94b2.png)
![要素設定_explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/13cb2191-28df-7b7a-b372-ffa0389214f9.png)
Windows Media Playerから検証を行ってみます。
Windows Media Playerの操作対象となるListItem要素をクリックするフローを作成します。
![操作_WMP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/7ad6b808-0a5b-5fb7-82f5-62b64360b85c.png)
Windows Media Playerに、操作対象となる要素がWindowに表示されている状況でフローを実行します。
![WMP_画面上に要素あり.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/35c6c99a-f30a-dfef-b575-b390dbd5ac12.png)
すると、以下の画面のように要素をクリックしてくれました。
![WMP_画面上に要素あり_結果.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/87df4cc9-9508-c170-a719-186f625b2141.png)
次に、操作対象となる要素がWindowに表示されていない状況でフローを実行します。
![WMP_画面上に要素なし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/20a81320-2ad1-1935-60c0-b42cbde40415.png)
これについても、以下のように要素をクリックしてくれます。
![WMP_画面上に要素なし_結果.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/abf464f8-8243-6fe1-244a-253d23a17f37.png)
では、今度はエクスプローラーの検証を行います。
エクスプローラーの操作対象となるListItem要素をクリックするフローを作成します。
![操作_explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/3626ce61-1a7a-4498-16e2-be5e805f8580.png)
エクスプローラーに、操作対象となる要素がWindowに表示されている状況でフローを実行します。
![explorer_画面上に要素あり.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/bc1e2e8e-0b3a-459f-55dd-3a29114fa9de.png)
こちらは、Windows Media Playerと同様に要素をクリックしてくれました。
![explorer_画面上に要素あり_結果.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/bd327138-3ffc-7a9f-7ef9-340ba45a62d2.png)
そして操作対象となる要素がWindowに表示されていない状況でフローを実行します。
![explorer_画面上に要素なし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/0da80239-b120-ebcb-2290-3e7021455a11.png)
すると、要素を見つけることができず、エラーが発生しました。
![explorer_画面上に要素なし_結果.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/9a0139b4-d768-948b-a7e1-6ccf41345d3d.png)
![explorer_画面上に要素なし_ログ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3071987/d84ff1ec-19b8-63a7-c275-b9d4bbc79655.png)

# 考察
これはあくまで個人の考察になりますが、

::: note
- エクスプローラーはスクロール表示領域外のListItemを要素ごと隠し、RPAやプログラムによる自動操作でも見つけることができないようにしている仕様がある。
:::

ということが今回の検証から考えられるのではないかと思います。
おそらく、PCへの負担を減らす目的があるのではないかと思います。
もしこの仕様通りであれば、Power Automateに限らず、他のRPAツールやプログラムによる自動操作でも同様のエラーが発生することになります。

ここまで書いておいてなんですが、今回考察として挙げた仕様、実はほとんど問題にならないと思います。
エクスプローラー上の操作はほとんどが他のアクションで代用可能なためです。
ただ、本当にエクスプローラーでは自動操作でも見つけられないようにしているを実装しているのであれば、要用の仕様を持つデスクトップアプリは他にもあるかもしれないと思っている次第です。
もしそのような仕様を持つデスクトップアプリを操作するのであれば、実装を工夫する必要がありそうです。

# あとがき
いかがでしたでしょうか？Power Automate Desktopやプログラムによる自動操作でスクロール表示領域外のListItem要素を見つけることができないデスクトップアプリがあれば、そういう仕様として実装を考えてみてもいいかもしれません。この記事がどなたか1人にでも役に立ったようであれば嬉しい限りです。