UiPath開発で頻繁に遭遇したエラーとその対策方法
UiPathロボットの開発を行っております青柳です。
開発業務を始めてから1年が経ちました。
今回はこの1年でよく起こったエラーとその解決方法を書こうと思います。
画面遷移直後の入力処理で値が入力されない
UiPathロボットは特に対策を講じない場合、画面が完全に切り替わる前に入力処理を行ってしまうことがよくあります。
この事象への対策として行っていることは2つです。
1.Find Element(要素を探す)アクティビティを使う
画面が切り替わった後に表示される要素をこのアクティビティを使い、
探させることでロボットはその要素が検出できるまで待機してくれます。
プロパティについては、画面に表示されているときのみセレクターが
取得できる要素の場合は「WaitActive」にチェックを入れます。
画面に表示されていなくてもセレクターが取得できてしまう要素は
「WaitVisible」にチェックを入れます。
2.入力系のアクティビティのプロパティの1つである「Target.WaitForReady」を「Complete」に設定
「Complete」に設定することで遷移後の画面が完全に表示されるまで入力を待ってくれます。
入力処理でセレクターに問題は無いのに別の欄に入力してしまう
セレクターの検証にチェックが入っている、また強調表示を押すと入力したい欄が赤く囲われるにもかかわらず、
ロボットを実行すると全く別の場所に値を入力してしまう現象が時々あります。
この現象への対処方法も2つあります。
1.入力処理の直前にSet Focusアクティビティを入れる。
このアクティビティに指定するセレクターは入力系アクティビティで指定しているセレクターと同じにします。
2.入力項目が複数ある場合は入力順序を変える
入力順序を変えることでエラーが解消する場合があります。
ExcelアプリケーションスコープのHresult例外
このエラーが出た場合はExcelアプリケーションスコープを
短時間(5秒くらい)のうちに何度も使用していないか確かめます。
何度も使用している場合はExcelアプリケーションスコープの直前に待機を入れるかまたは「Kill Process」を
入れてExcelのプロセスを切るとエラーが出にくくなります。
(プロパティのプロセス名に「”Excel”」と入力するとExcelのプロセスを切ることができます。)
これが原因ではなさそうな場合は、Hresult例外が出たアクティビティを
実行する直前のExcelファイルの状態を確認すると何かわかるかもしれません。
以上がこの1年でよく遭遇したエラーとその対策方法でした。
対策方法については今回紹介したものよりも良い方法があるかもしれません。
また、これらの対策を講じることで100%エラーが解消するとは限りませんので、
1つのエラーに対して複数の解決策を持っていることが重要です。
これからもより良い対策方法を検討、検証し解決策のレパートリーを増やしていこうと思います。