見出し画像

Modern Browser Automation 問題と解決策 - 第3回 フィールドに値が入力されるものの、フィールドの入力イベント処理が実行されない

Blue Prism公式noteアカウントをご覧いただき、誠にありがとうございます。プロフェショナルサービスのAkiです。

このシリーズはModern Browser Automation(Edge, Chrome, Firefoxの自動化)の「起こり得る」問題とそれぞれの解決策について連載します。
第1回は「アタッチができない」問題第2回は「スパイされた要素が時々認識できなくなる」問題をご紹介しました。
第3回の今回は「フィールドに値が入力されたものの、フィールドの入力イベント処理が実行されない」問題についてご紹介します。
どうぞよろしくお願いします。

1. 現象

ブラウザーモードでスパイされたフィールド(ドロップダウンリストから入力値を選択するタイプがこのケースに当てはまることが多いです)に入力ステージで書き込むと入力された文字列がグレーアウトされるか、正しく表示されるものの、フィールドのイベントをトリガーすることができません。
そのため、提出ボタンなどをクリックし、次の処理に進もうとする時「〇〇〇を入力してください」とのエラーメッセージが出ます。

2. 原因

対象のフィールドの入力イベント処理が実行されないためです。これはブラウザーモードの既知の問題として認識され、バージョン7.0に大部分改善できましたが、特殊のブラウザーアプリケーションに対してはまだ対応できていません。

3. 解決策

解決策 1

グローバルキー送信で対応します。
まず、読み込みステージで”座標位置を取得”を行い、その値を例えばBoundsというコレクションに保存します。

次にNavigateステージでActivate Applicationを行った後、グローバルマウスクリックを下記の設定で行います(このアクションは上記のフィールドの中心をクリックします):

※BoundsはGet Boundsの結果を保存するコレクションです。
 このアクションでクリックされたフィールドはアクティベート(フォーカス)された状態になり、グローバルキー送信で値を入力できるようになります。

ただし、この解決案を実行する時の注意点ですが、画像認識モード(Regionモード)と同じように、各ランタイムリソースのデスクトップスクリーンの解像度及びブラウザーのズーム率を常に共通で同一に設定する必要があります。

解決策 2

UIAモードでフィールドを識別します。
この解決案が一番簡単で、確実にフィールドに値を入力することができますが、他のスパイモードと比べると、処理する時間がかかります。

このように、入力ステージで、フィールドの入力イベント処理が実行されない時、2つの解決案が考えられますが、実行の簡単さ及び処理スピードはトレードオフ関係だとわかるようになりました。

これまで紹介したModern Browser Automationの問題:
第1回 ‐ アタッチできない
第2回 ‐ スパイされた要素が時々認識できなくなる