見出し画像

【ポエム】さようならInternetExplorer。Seleniumで乗り越えたあるある課題を思い出す


どうも、こんにちはテスト自動化アーキテクトの森川です。

先日IEのサポート終了が公式に発表されました。エンジニアが多い私のSNSタイムラインではざわざわとしていました。

自動テストエンジニアはE2Eテストの難所・鬼門と言われたIE環境と
やっとお別れをすることができそうですね。

Microsoft 社 Internet Explorer のサポート終了について:IPA 独立行政法人 情報処理推進機構


Selenium × IEを振り返る

検証スコープにIEが含まれると、「あぁ、E2Eテストは遅れるだろうな。ちゃんとバッファ積んでね。」と思ったものです。

IEDriverServerの動作自体が重たいですし、検証時の開発者ツールも不安定、そしてエンジニアのモチベーションも上がりにくい。

他のブラウザと比べて挙動が独特すぎます。

SeleniumでのIE自動化にはさまざまなテンプレート的課題が立ちはだかったのを思い出します。ちょっと振り返ってみましょう。

尚、本稿は思い出ポエムです。
確かな技術情報をお求めの方はSeleniumHQやStackOverFlowの解決ログを参照くださいね。

レジストリの変更

ドライバが作成するInternet Explorerのインスタンスへの接続を維持できるようターゲットコンピュータ上でレジストリエントリを設定する必要があります。
64ビットWindowsの場合、キーはHKEY_LOCAL_MACHINE_SOFTWARE/Wow6432Node/Microsoft/Internet Explorer/Main/FeatureControl/FEATURE_BFCACHE となります。

引用元:IE Driver Server | Selenium

保護モード

Internet Optionsの保護モードをとある設定にしないとWebDriverが起動しないというもの。
自動化エンジニアが初めて遭遇するときはたいてい
「えー、なにそれ儀式?」という顔をされましたね。

また、IE10以上の場合は、「拡張保護モード」を無効にする必要があります。このオプションは、「インターネットオプション」ダイアログの「詳細設定」タブにあります。

引用元:IE Driver Server | Selenium

ZOOMサイズ

IEの表示倍率をデフォルト値にしていないと起動しません。無視するように設定はできますが、マウス操作の座標が正しく取れなくなってしまいます。
こちらも初見で「儀式感・・・」と思った記憶があります。

せっかくの設定がWSUSのアップデートで初期化されてしまう

自社でテスト環境を持っている場合はWSUSパッチは必須ですよね。
アップデートするとIEが初期化されて上記の設定がデフォルト化されていたり、初期設定画面が開いて進めない、という悩ましい事態になります。
日曜に「ねぇ、テスト全部落ちてたよ」の連絡が飛んできたのも
いい思い出です。

要素クリックできない

他のブラウザではクリック可能なのに。
CTRLキーをSendKeyするとかおまじないがありました。
結局、JavaScriptでclick()するAPIを叩くことになるのですが
イベントハンドラへの影響などがあるとこれまた面倒なことに。

遅い

IEDriverServer自体、少々遅いのですが、64bit用を使うと遅くて
テキスト1文字に10秒ぐらいかかったりします。
これをみてこのE2Eツールは駄目だ、と思われたときは悲しかったです。

スクショが真っ黒

エージェントホストをRDP接続して、閉じてから自動テストを起動すると
あら不思議、テストは無事に通りますがスクショがすべて真っ黒に。
EXCELにスクショを綺麗に貼り付けるトラディショナルな仕組みを
運用していたときは、謎の黒塗り文書の出現にチームは驚いたものです。

※画像はイメージです

Session0

WindowsのService上(Session0)でIEDriverServerを動かすと
上述のスクショ問題に加えて、なにかとうまく動かないケースが発生します。
数年前はなんでだろうと悩みましたが、今では公式にちゃんと載っているんですね。親切。

IEDriverServer.exeをWindowsサービスアプリケーションの一部として使用することは、明示的に非サポートとなります。

引用元: IE Driver Server | Selenium - Under a Windows Service

Basic認証

テスト環境に実装されたBasic認証を超えるミッションがしばしばありました。
URLにID/PASSを載せるにはレジストリ変更が必要となり
ここでもまたセキュリティ的な議論が始まります。
ネット上にもあまたの「できる」「できない」情報がありますが
無理に自動化せずテスト環境は認証不要にしてもらうのが
ベストプラクティスだと信じています。

Command line server for IE driverは動作を停止しました

想定外の処理が発生したときに出るエラーです。
他ブラウザのDriverとは挙動が異なり、再現性も低い場合が多いです。
調査工数が膨らんで解決しないまま乗った終電もいい思い出です。

上記の問題のいくつかはレジストリ設定で回避できますが
CIからエージェントホストのレジストリ更新は権限的に難しい場合もあり
社内インフラ部門の方と都度相談していたのは前時代的な良き思い出です。

ここに挙げた以外にもまだまだありますが
本日は思い出エントリーということで割愛しています。
「ヘイ・ユー!大事なの忘れてるよ!」という方は、ぜひコメントください

IEはなくなるのか?

現実問題としては、クローズドなNWの基幹システムなどでは
バリバリ継続運用されることが予想されます。

EdgeのIEモードに引き継がれるという新たな課題も生まれることでしょう。シュリンクしていくとはいえ、レガシー技術として残りそうです。

終わりに

ふり返ってみると、当時はみんなよく頑張っていたなぁ
でもE2Eテストでこんなに頑張っちゃいけないなぁ
という思いが入り混じって複雑な心境です。

最近では「E2Eテストは頑張りすぎない」ということが
ベスト・プラクティスの1つになって来ていると信じていますが。

では、具体的にはどうすればいいのか?
明確な答えがないのもこれまた事実でしょう。きっとケース・バイ・ケースなんでしょう。

自動テストのある世界が平和になることを願って
本稿は締めたいと思います。
思い出ポエムにおつきあいいただき、ありがとうございました。

最後になりましたが、
さようならInternet Exporler、お疲れ様でした
きっとあなたのことは忘れません。


執筆者プロフィール:森川 知雄
中堅SIerでテスト管理と業務ツール、テスト自動化ツール開発を12年経験。
SHIFTでは、GUIテストの自動化ツールRacine(ラシーヌ)の開発を担当。
GUIテストに限らず、なんでも自動化することを好むが、ルンバが掃除しているところを眺めるのは好まないタイプ。
さまざま案件で自動化、効率化によるお客様への価値創出を日々模索している。技術イベントSHIFT EVOLVEの運営を担当。司会は大の苦手。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/