
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回 ‐ スパイされた要素が時々認識できなくなる