Selenium 2.0 "WebDriver" を使って、C# からブラウザを自動操縦する話。
下記 C# コードにて、
Selenium WebDriver を使って IE を
IE Driver 経由で起動し、所定の Web ページを開いたあと、ページ中の input 要素に "Hello World" と入力するとしょう。
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl(url);
var textbox1 = driver.FindElement(By.Id("textbox1"));
textbox1.SendKeys("Hello World");
とりあえず動作はする。
動作はするが、自分の環境だと
1文字打鍵するのに5秒かかる
という異常事態が発生した。
この異常現象が発生したのは IE Driver の場合のみ。
Firefox や Chrome に切り替えて試したが、同じ現象は発生しなかった。
また、IE Driver 環境であっても、別の PC 上ではなんら問題なくサクサクと動作した。
原因は IE Driver の対象 bit 数
ネットで検索したところ、下記スレッドを発見。
http://stackoverflow.com/questions/8850211/why-is-selenium-internetexplorerdriver-webdriver-very-slow-in-debug-mode-visual
この異常現象が発生した環境だが、OS が Windows8 Pro 64bit 版だったので、IE Driver は 64bit 版をダウンロードして使っていた。
しかし OS の bit 数とは関係なく、どうも、C# 側コードが 32bit モードで動作していたためか、そのせいで処理速度が異常に遅くなっていたようだ。
改めて 32bit 版の IE Driver をダウンロードして導入し、再度試したところ、今度は正常に高速に実行された。