SeleniumWebdriverを使ってテストの自動化を行う際、BASIC認証付きの開発用サイトにログインして操作したい、というシチュエーションがあります。
Basic認証のあるサイトのURLを普通に開くと、以下の画像のような入力欄が出てきます。
こちらはChromeの例です。
このダイアログを操作してユーザ名とパスワードを打ち込んでログインボタンを押下してもいいのですが、もっと簡単な方法は
driver.get("http://username:password@hogehoge.com");
です。URLの中にユーザ名とパスワードを含めてgetメソッドに渡してあげると開くことが出来ます。
注意:IEDriverはもうひと工夫必要
上記のやり方でChromeとFirefoxはうまく動くのですが、IEの場合はレジストリをいじってあげないといけません。
こちらの回答が参考になります。:Basic authentication with Selenium in Internet Explorer 10 – Stack Overflow
テスト用に便利なサイト
上記画像も、htaccessサンプル/BASIC認証(パスワード認証)から取らせて頂きました。BASIC認証有りのサンプルを公開してくださっているので、SeleniumWebDriverからBASIC認証通ってログインする操作を試してみたい場合には使わせてもらうのがいいと思います。
その他参考
- selenium2 – How to send Basic Authentication headers in Selenium? – Software Quality Assurance & Testing Stack Exchange
- internet explorer – In IE: org.openqa.selenium.WebDriverException: This usually means that a call to the COM method IWebBrowser2::Navigate2() failed – Stack Overflow
あとはこの記事書いてから気づいたのですが、Selenium実践入門にこの方法が書いてありました。さすが、この本よく読むとSelenium使っててつまるポイントの対処法が大体書いてあるんですよね。