top of page

SeleniumBasicの使う場合の6つのコツ

執筆者の写真: まあさまあさ

更新日:2020年2月15日

今回はVBAによるIE制御等と比較した注意点、コツをまとめさせていただきます。


①WinApiは使わない方が楽?

VBAによるIE制御はWinApiを組み込んで使用することが多いと思いますが、SeleniumBasicは必ずしも使わないでよいと思います。


これはSeleniumBasicは高性能なためそもそも使用する必要性が少ないためです。もう一つの理由は、VBAによるIE制御を使用した場合、変数をすべて事前に定義する必要性が生じ、開発時の負荷が若干増えるためです。WinApiはPCの仕様に依存して動く動かないの問題が発生する場合もあります。


使用しても問題はありませんが、使用しない方が開発の負荷が軽くなる可能性があります。



②複数のブラウザに対応させておく

クロームとEdgeなど、複数のブラウザで動くようにしておくと、どちらかが使えない場合も、もう一方で動かせる可能性があり有利です。ブラウザやPCのバージョンアップ等で動かなくなることはよくあります。



③一部PCに対して、ブラウザの自動更新を切っておく

これは異論がある方もいらっしゃると思いますが、行った方が良いと思います。特にWebDriverを使う場合、ブラウザのバージョンとドライバーのバージョンが異なると動かなくなります。ブラウザの更新は開発者が時間があるときにまとめて手動でおこない、通常自動更新は切った方が安全だと思います。


ただ、部署内の全PCの自動更新を切る必要はありません。緊急時用に数台のPCの自動更新を切っておけばよいと思います。そのPCは普段ユーザーが使用していない、タスクスケジューラを用いたRPAの自動運用専用のPCがベストです。



④動作ごとの間に1秒以上の待機時間を挟む

先ほどもお伝えしましたが、SeleniumBasicでの待機の方法は


driver.Wait 1000


となります。最後の数字はミリ秒で、1000で割ると秒になります。


ブラウザ操作の自動化を行う方はこちらの事件を知っておいていただいた方が良いと思います。


同時には一回しかリクエストを送らず、受信後に間隔をおいてから次のリクエストを送信していた(1秒に1アクセス程度に調整)。これはクローラの動作としては「常識的」「礼儀正しい」[6]程度のものであり、応答を待たずに過大なアクセスを行うことで高負荷にさせる攻撃用のプログラムと異なる動作であった。


この方は訴えられた上で結果として無罪となりましたが、一つの大きな基準が生まれました。1秒に1回程度のアクセスは常識的で問題ないとした点です。一般にWebサイトは人間のために作られており、RPAが人間に不可能なほどの高速で動き回れば障害が発生する可能性があります。


またPC自体も、人間には不可能なほど高速で操作することを想定してはいません。速度を上げた方が効率が上がる、と思われがちですがそこにはこだわらず、安定性重視が良いと思います。特に人間がいない状態、タスクスケジューラで自動で動くRPAの場合、速度にこだわってもメリットが少ないです。人間が見ている状態で動くRPAに関しては速度が速い方が人間の拘束時間が減るのは事実ですが、少しゆっくりの方がRPAが作業ミスした場合に発見出来たり、そもそもRPAが誤動作するリスクが下がるメリットがあります。



⑤WebDriverはローカル以外のフォルダーにも置く

WebDriverは通常SeleniumBasicが置かれたローカルのフォルダーに配置しますが、共有フォルダー等、それ以外の場所にもバックアップを置いておくほうが良いと思います。これはユーザーが個別にWebからダウンロードするのが難しいですし、Edgeのようにファイル名のリネームが必要な場合もあります。最初からリネームしたものを置いておくと便利です。


また後日ご紹介したいと思いますが、WebDriverの置き場所は任意にすることが可能で、ユーザーが個別に差し替えないでも代表者1名が差し替えることで対応することも可能です。この場合ブラウザのバージョーンが統一されているという条件がつきます。



いかがあったでしょうか。これらはSeleniumBasicだけでなくSeleniumを使う場合にも共通した方法かと思います。


こういった対策をすべて講じても、PCのバージョンアップや元データの不備、Webサイト自体の更新などでRPAが突然動かなくなることはあり得ます。メンテナンスの負荷が高いのがRPAの特徴ではありますが、それをいかに乗り越え安定して運用するかが腕の見せ所でもあります。



⑥ブラウザ最大化はWindow.Maximize。


実際には、

driver.Window.Maximize

という形で使います。


シクリックスはご存じの通り、画像認識を多用して自動化しますので、ウインドウのサイズが毎回異なると認識に失敗する可能性が高くなります。ブラウザを開いたら必ず先ほどの一行を入れ、ウインドウを最大化しましょう。

Comments


bottom of page