簡體   English   中英

如何在 selenium-webdriver nodejs 土地中更改 selenium 用戶代理?

[英]How to change selenium user agent in selenium-webdriver nodejs land?

我在 javascript + mocha + node 領域。

我曾嘗試將 userAgent 和 'user-agent' 設置為功能鍵:

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();

這個答案說要使用 firefox 配置文件,但沒有公開。 沒有driver.FirefoxProfile也沒有一個全局公開的,也沒有webdriver.FirefoxProfiledriver.profiles等。

我試過谷歌搜索並查看源代碼文檔,但沒有任何內容。

我使用此代碼成功地使用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)
...

鏈接顯示了如何更改firefox的用戶代理,盡管提供的代碼是針對C#/ Ruby的。

您只需要安裝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/');
});

十分簡單!

不能用Firefox做到這一點,但你可以用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();

對於鉻你可能會這樣:

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();

最近的 selenium-webdriver 版本添加了一個功能來指定 firefox 首選項

import {Builder, WebDriver} from 'selenium-webdriver';
import {Options} from "selenium-webdriver/firefox";

const options = new Options().setPreference('general.useragent.override', '....');
const builder = new Builder().forBrowser('firefox')
      .setFirefoxOptions(options);

const webDriver = this.createClientBuilder().build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM