2012-02-01 40 views
13

我想知道如果我可以在飛行中更改用戶代理配置文件,而不創建ForeFoxDriver的新實例 ?我有以下代碼,我可以通過iphone或ipad的用戶代理等。它工作正常,但我不得不爲每個測試創建一個新的實例,它慢慢打開/關閉瀏覽器。例如。在使用iPhone用戶代理進行測試後,我想將配置文件切換到Android用戶代理或iPad用戶代理,驅動程序是否可以選擇更改此選項而無需創建新實例?WebDriver FireFoxProfile UserAgent使用FireFoxDriver切換

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 2012-02-05 07:37:54

+0

現在有什麼解決方案嗎? – andyf 2013-09-26 03:18:27

回答

2

RemoteWebdriver(FirefoxDriver的父類)僅在會話啓動時(在構造函數中)更新功能映射。不幸的是,我們不能在別處修改它。我認爲這是一個非常好的主意。

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

但正如前面所說的,我從來沒有這樣做,而且不知道如何控制通過Selenium的插件

+0

我會檢查一下,謝謝你的想法。 – Green 2012-02-13 17:36:20

0

在我們公司,我們使用Browsermob代理,一個用java編寫的開源代理。它與Selenium完美集成,並且可以從代碼中控制它。它爲我們提供了許多用途,其中之一就是標題操作。

做這裏描述的方法:https://github.com/webmetrics/browsermob-proxy(HTTP請求操作部)

0

這項工作對我來說:

server.addHeader("User-Agent", uaString) 
相關問題