Selenium-rc: Existe uma maneira de alterar o agente do usuário sem alterar o perfil do Firefox

StackOverflow https://stackoverflow.com/questions/2501788

  •  21-09-2019
  •  | 
  •  

Pergunta

Quero executar testes que alterem o agente do usuário na solicitação HTTP enviada do navegador (como o complemento do FF, o Switcher do agente do usuário faz). Eu vi que você pode fazer isso brincando com o perfil da FF (http://seleniumhq.org/docs/09_webdriver.html).

Existe uma maneira de fazer isso dentro de um teste? Algo como a função addCustomRequestHeader() que define um cabeçalho em vez de adicioná -lo

Foi útil?

Solução

Você pode inserir uma função como essa para alterar o agente do usuário em tempo real antes de fazer sua solicitação 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);
    } 
}

Outras dicas

Se você estiver usando o driver da Web Selenium 2 em Java, poderá criar um perfil do Firefox e definir a sequência do agente como uma preferência no perfil. Em seguida, use o perfil para criar o objeto 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);

Para um pouco mais de informações e exemplos de código -fonte, consulte a documentação do driver da web de Selenium para Driver do Firefox no http://seleniumhq.org/docs/03_webdriver.html#firefox-driver.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top