2013-08-29 47 views
5

我在JavaScript +摩卡+節點的土地上。如何更改selenium webdriver nodejs land中的硒用戶代理?

我已經嘗試設置的功能的userAgent和「用戶代理」爲關鍵字:

var webdriver = require('selenium-webdriver'); 
var ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X)'; 

var driver = new webdriver.Builder(). 
    ... 
    withCapabilities({ 'browserName': 'firefox', 
     userAgent: ua, 
     'user-agent': ua, 
    }). 
    build(); 

this answer它說,使用Firefox的配置文件,但是這不暴露。沒有driver.FirefoxProfile也不是一個全球性暴露,也不webdriver.FirefoxProfile也不driver.profiles

我曾嘗試谷歌搜索和尋找the sourcethe documentation但並沒有什麼這一點。

回答

1

不能用火狐瀏覽器做,但你可以用用Chrome做。這是無證:

var chrome = require('selenium-webdriver/chrome'); 

var opts = new chrome.Options(); 
opts.addArguments(['user-agent="YOUR_USER_AGENT"']); 

var driver = new webdriver.Builder(). 
    withCapabilities(opts.toCapabilities()). 
    build(); 
5

我使用WD與此代碼成功地改變了幻影的用戶代理:

var capabilities = { 
    'browserName': 'phantomjs', 
    'phantomjs.page.settings.userAgent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.11 Safari/537.36' 
}; 
return browser 
    .init(capabilities) 
... 

而且this鏈接顯示如何更改Firefox的用戶代理,但所提供的代碼是C#/ Ruby的。

+0

我遇到了一個問題,即一個ASP.net服務器將返回破碎JavaScript和默認PhantomJS用戶代理,所以我必須要欺騙,所以我得到一個正確的頁面。另請參閱https://stackoverflow.com/questions/20164753/sys-webforms-pagerequestmanager-is-undefined-error-in-ie11-working-fine-in-ie10 – Luksurious

3

你只需要安裝firefox-profile包。這裏有一個片段:

var webdriver = require('selenium-webdriver'); 
var FirefoxProfile = require('firefox-profile'); 

var myProfile = new FirefoxProfile();   
var capabilities = webdriver.Capabilities.firefox(); 

// here you set the user-agent preference 
myProfile.setPreference('general.useragent.override', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'); 

// attach your newly created profile 
myProfile.encoded(function(encodedProfile) { 
    capabilities.set('firefox_profile', encodedProfile); 

    // start the browser 
    var wd = new webdriver.Builder(). 
     withCapabilities(capabilities). 
     build(); 

    wd.get('http://testingsite.com/'); 
}); 

很容易!

0

鉻你可以做這樣的:

var driver = new webdriver.Builder() 
.usingServer('http://localhost:4444/wd/hub') 
.withCapabilities({browserName: 'chrome', chromeOptions: {args:['user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"'] } }) 
.build(); 
+1

請編輯更多信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。我們在這裏努力成爲知識的資源。 – abarisone

相關問題