2012-02-01 8 views
13

ForeFoxDriverの新しい インスタンスを作成せずに、その場でユーザーエージェントのプロファイルを変更できるのでしょうか?私は、iphoneやipadなどのためのユーザーエージェントで渡すことができます次のコードを持っています。それは正常に動作しますが、ブラウザを開く/閉じるとして遅い各テストの新しいインスタンスを作成する必要があります。例えば。 iPhoneユーザーエージェントでテストを行った後、プロファイルをAndroidユーザーエージェントまたはiPadユーザーエージェントに切り替えるには、ドライバが新しいインスタンスを作成することなくこれを変更するオプションを取得しますか?WebDriver FireFoxProfile FireFoxDriverでUserAgentを切り替える

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("general.useragent.override","some user agent, like iphone or iPad"); 
WebDriver driver = new FirefoxDriver(profile); 

// do some tests 
// set profile to new user agent 
// profile.setPreference("general.useragent.override","some android user agent"); 

// can i now set the driver to the new profile here and perform more tests on this same instance of the driver? 
+1

これまでのところ、今あなたがこれを行うことはできません。 – p0deje

+0

今、何か解決策はありますか? – andyf

答えて

2

RemoteWebdriver(親クラスFirefoxDriver)は、セッションが開始されているとき(コンストラクタ内)にのみ機能マップを更新します。残念ながら、他の場所では変更できません。私はそれがとても良いアイデアだと思う。

1

エクステンションを使用する方法は1つだけです。しかし、私はこれを試したことがない...それはで動作するかもしれません

FirefoxProfile ffProfile = new FirefoxProfile(); 
ffProfile.addExtension(new File("path/to/extension")); 
WebDriver driver = new FirefoxDriver(ffProfile); 

拡張子はユーザエージェントスイッチャーです: https://addons.mozilla.org/cs/firefox/addon/user-agent-switcher/?src=ss

しかし、前に述べたように、私はそれをやっていないし、制御する方法を見当もつかないんアドオンを介してセレン

+0

私はこれをチェックします。 – Green

0

私たちはBrowsermobプロキシ、Javaで書かれたオープンソースのプロキシを使用しています。これはSeleniumと完全に統合され、コードからコントロールすることができます。それは多くの目的のために私たちに役立ちます、その一つはヘッダー操作です。私にとってhttps://github.com/webmetrics/browsermob-proxy(HTTPリクエストの操作部)

0

この作品:

それを行う方法がここで説明されて

server.addHeader("User-Agent", uaString) 
関連する問題