Selen-rc: Gibt es einen Weg, um die User-Agenten zu ändern, ohne das Firefox-Profil zu ändern
-
21-09-2019 - |
Frage
Ich möchte Tests ausführen, die User-Agent in der HTTP-Anforderung vom Browser (wie die FF Add-on, Switcher User-Agent der Fall ist) gesendet ändern. Ich sah Sie es durch das Spiel mit dem FF-Profil tun können ( http://seleniumhq.org/docs/09_webdriver .html ).
Gibt es eine Möglichkeit, es in einem Test zu tun? So etwas wie die Funktion addCustomRequestHeader()
, die einen Header eher setzt, als es das Hinzufügen
Lösung
Sie können eine Funktion wie diese legen Sie den User-Agent on the fly zu ändern, bevor Sie Ihre HTTP-Anforderung machen:
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);
}
}
Andere Tipps
Wenn Sie die Selenium 2 Web-Treiber in Java verwenden, können Sie ein Firefox-Profil erstellen und den Agenten-String als bevorzugt im Profil festgelegt. Dann das Profil verwenden, um das WebDriver Objekt zu erstellen:
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);
Für etwas mehr Informationen und Quellcode-Beispiele finden Sie in der Selenium Web-Treiber-Dokumentation Firefox-Treiber http://seleniumhq.org/docs/03_webdriver.html#firefox-driver .