Selenium-rc: есть ли способ изменить пользовательский агент без изменения профиля Firefox - PullRequest
2 голосов
/ 23 марта 2010

Я хочу запустить тесты, которые изменяют пользовательский агент в запросе http, отправляемом из браузера (как это делает надстройка FF, переключатель пользовательского агента). Я видел, что вы можете сделать это, играя с профилем FF (http://seleniumhq.org/docs/09_webdriver.html).

Есть ли способ сделать это в рамках теста? Что-то вроде функции addCustomRequestHeader(), которая устанавливает заголовок, а не добавляет его

Ответы [ 2 ]

0 голосов
/ 09 августа 2012

Если вы используете веб-драйвер Selenium 2 в Java, вы можете создать профиль 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);

Для получения дополнительной информации и примеров исходного кода см. Документацию Selenium Web Driver для Драйвер Firefox в http://seleniumhq.org/docs/03_webdriver.html#firefox-driver.

0 голосов
/ 21 января 2011

Вы можете вставить функцию, подобную этой, для изменения пользовательского агента на лету, прежде чем вы сделаете ваш 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);
    } 
}
...