ウェブページのテストツールと言うか、実態としてはブラウザの定型操作の自動化ツールの話。
とあるウェブページをロードして簡単な操作を一定時間毎に自動的に繰り返すニーズがあったので色々調べたところ、Selenium IDEというブラウザの機能拡張が使えそうだと分かり早速導入した。因みに環境は、OSがLinux MINT 20.2(MATE 1.24.0)、ブラウザはFirefox 104.02(64-bit)、PC本体は先代のメインPCでCPUが第4世代Intel Corei7、メモリ容量は32GBだ。
さてSelenium IDEなのだが、ループ操作(while~end)を繰り返すと、メモリリークでもあるのか100回の反復も待たずに32GBのメモリを使いきってしまう。所謂システムモニターのメモリ使用量のグラフが右肩上がりの線を描き続ける様はなかなかに絶望的な光景だ。当然の様に自動化処理はメモリを使い切った時点でエラーを吐いて落ちてしまい、話にならない。
続いて試した機能拡張がKatalonだ。メモリリークを疑わせる挙動は無かったのだが、やはりループ回数が100回に達する前に自動化処理がエラーで落ちてしまう。全く根拠は無いのだが、エラーメッセージを読むにFirefoxのバグか相性の悪い変数設計を拾ってしまっているように見える。
で、いよいよこのアプローチを諦めようと考え始めたタイミングで見つけたのが、UI.Visionだ。結論から書こう。エラーも吐かずメモリの異常な使用も見られず、落ちる気配は微塵もない。現在はテストコードのテスト用スケルトンを動かしているだけなので、自動でやらせていることと言えば、特定のウェブページをロードした後にウェブページ内の特定の要素の存在を120秒毎にチェックしているだけだ。while~whileendのループは既に600回以上廻っている。今後何か問題が起きるにしても、原因はFirefox側にあることになるんじゃないかと思い始めている。
Google Chromeなら大丈夫だって?かもねぇ・・・知らんけど。