Selenium Advent Calendar 2013 への投稿。
Selenium は言わずと知れた(?)、Webアプリケーションに対する自動化テストを実現するための様々なソフトウェア群。
とくにここでは、各種OS・各種プログラミング言語からWebブラウザを "自動操縦" する、一般に Selenium WebDriver と呼ばれる機能に焦点を当てた話題をとりあげる。
さてその Selenium。
実際の業務において、C# で記述した品質検査用プログラムが Web ブラウザを自動操縦するところで活用している。
そんなある日、とある不具合にぶちあたった。
自分の開発マシン上では正常に動作する Selenium 利用による自動化テストシナリオが、品質検査担当者の環境ではなぜか失敗するのだ。
ログを確認すると、シナリオの途中で "Webページ上のあるボタンをクリックせよ" というステップがあるのだが、そのボタンクリックが動作していないことがわかった。
自分の開発マシンでは正しくクリックされるのに、品質検査担当者による模擬環境ではクリックされない。
Selenium WebDriver による Web ページ上の要素のクリックなんぞは、あまりに基礎的な機能なだけに、どんな不具合が一体あるというのか想像も難しくしばし途方に暮れた。
と、ふと品質検査担当の模擬環境で佇んでいるブラウザのステータスバーに目を留めると...

...
ズーム倍率が 105% になっている!
人間が見た目には、ズーム倍率が 105% になっても、ページが拡大表示されているとはなかなか気づけない。
だがしかし、
もしかしてこれが原因で、要素のクリックに失敗しているのではないかと推測し、ズーム倍率を 100% にリセットして自動化テストシナリオを実行したところ...
無事成功した!
ということで、以後、指定の URL にナビゲーションする際は、以下のコード (C#) によってキーボードからの「Ctrl + 0」押下をエミュレートし、ブラウザのズーム倍率を 100% にリセットする処理を常に実行するようにした。
webDriver
.FindElement(By.TagName("body"))
.SendKeys(Keys.Control + "0");
これで誰の環境でも、以前より安定して Selenium による自動化テストが実行されるようになった。