ブラウザから送信された http リクエストのユーザー エージェントを変更するテストを実行したい (FF アドオンのように、ユーザー エージェント スイッチャーが行う)。FF プロファイル ( http://seleniumhq.org/docs/09_webdriver.html )をいじってみると、それができることがわかりました。
テスト内でそれを行う方法はありますか?addCustomRequestHeader()
ヘッダーを追加するのではなく設定する関数のようなもの
ブラウザから送信された http リクエストのユーザー エージェントを変更するテストを実行したい (FF アドオンのように、ユーザー エージェント スイッチャーが行う)。FF プロファイル ( http://seleniumhq.org/docs/09_webdriver.html )をいじってみると、それができることがわかりました。
テスト内でそれを行う方法はありますか?addCustomRequestHeader()
ヘッダーを追加するのではなく設定する関数のようなもの
Java で Selenium 2 Web Driver を使用している場合は、Firefox プロファイルを作成し、エージェント文字列をプロファイルの設定として設定できます。次に、プロファイルを使用して WebDriver オブジェクトを作成します。
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("general.useragent.override", "Mozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F191 Safari/6533.18.5");
WebDriver driver = new FirefoxDriver(profile);
もう少し詳しい情報とソース コードの例については、http://seleniumhq.org/docs/03_webdriver.html#firefox-driver にある Firefox ドライバーの Selenium Web Driver のドキュメントを参照してください。
次のような関数を挿入して、http リクエストを行う前にその場でユーザー エージェントを変更できます。
function changeuserAgent() {
var altuserAgentGetter = function () {
return "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 <choose your string>";
};
if (Object.defineProperty) {
Object.defineProperty(navigator, "userAgent", {
get: altuserAgentGetter
});
}
else if (Object.prototype.__defineGetter__) {
navigator.__defineGetter__("userAgent", altuserAgentGetter);
}
}