Wie behandeln Sie die Standardauthentifizierung mit Winkelmesser?
Ich versuche Winkelmesser zu schreiben ein paar tests in einem nicht eckigen Anwendung. Ich habe den login in eine Seite Trog basic-Authentifizierung bei google chrome, aber ich habe keine Ahnung, wie.
Ich habe bereits versucht baseUrl: 'https://username:password@url'
und capabilities: {
'browserName': 'chrome',
'chromeOptions' : {
args: ['--login-user=foo', '--login-password=bar']
}
}
Aber keine, wenn diese für mich gearbeitet. Weiß jemand, wie es zu tun? Ich habe einige harte Zeit auf Sie.
- Halten Sie im Verstand, können Sie deaktivieren Sie Authentifizierung für bekannte IP-Adressen (z.B. Ihre CI-server).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die kurze Antwort ist, es gibt keine einfache Möglichkeit, es zu tun auf chrome, weil Sie nicht unterstützen, ändern request-Header -- siehe https://code.google.com/p/selenium/issues/detail?id=141 (Titel sagt, Antwort-Header, aber wenn Sie es Lesen, es ist für alle Header).
Dass gesagt wird, es gibt Möglichkeiten, es zu tun, wenn auch schwierig.
1) Finden Sie eine chrome-Erweiterung/plugin, das Sie ändern header. Eine einfache Suche, bringen viele von Ihnen: https://chrome.google.com/webstore/search/modify%20header. Müssen Sie das plugin hinzufügen, um webdriver: siehe Ist es möglich ein plugin hinzufügen, um chromedriver unter einem Winkelmesser test?.
2) können Sie browsermob-proxy (https://github.com/lightbody/browsermob-proxy); auf diese Weise leiten Sie Ihren traffic durch den proxy, die würde fügen Sie die Header für Sie.
Aus den docs:
Gibt es einen Knoten Projekt, die Ihnen helfen können, https://github.com/zzo/browsermob-node, aber Sie würden noch brauchen, um Ihre proxy-server selbst.
Beide Wege für chrome sind Komplex, aber Sie würde bekommen, was Sie wollen. (oder Sie können stick mit firefox und Folgen Sie Robert ' s Antwort)
In der Tat, können Sie einfach die url als http://username:[email protected]. Chrome handle es!
http://example.com/test
so gab ichbaseURL
alshttp://username:[email protected]/test
aber immer timed out und nicht laden.Es ist, weil Firefox nicht Vertrauen jede Website standardmäßig mit der Absendung der windows auth info über. Auch wenn Sie es ändern Sie in den Einstellungen manuell, es wird nicht beeinflussen, Winkelmesser, weil es öffnet sich Firefox mit einer isolierten Konfiguration jedes mal, wenn Sie führen Sie Ihre Ende-zu-Ende tests.
Müssen Sie ein Programm einrichten, ein Firefox-Profil und seine Präferenzen, wie, es würde Vertrauen localhost (oder eine andere website, je nachdem, wo die Seiten geladen werden)
Ersten, schauen Sie sich dieses Beispiel. Es zeigt, wie Sie können festlegen, dass das Profil und wie kann man Präferenzen setzen.
https://github.com/juliemr/protractor-demo/tree/master/howtos/setFirefoxProfile
Was es tut, ist, dass es ändert die homepage für jeden neuen tab. In der gleichen Weise (mit der firefoxProfile.setPreference-Methode), können Sie ändern Sie die Einstellungen verantwortlich für vertrauensvolle Webseiten. Sie heißen "Netzwerk.automatic-ntlm-auth.trusted-uris" und "Netzwerk.negotiate-auth.delegation-uris". Sie müssen, um Sie beide zu "localhost". (Wieder, wenn Sie an einem anderen Ort, es ist offensichtlich, dass die url)
Dass Problem beheben sollte 🙂
Ab der version 59 Chrom nicht mehr unterstützt URLs mit eingebetteten Anmeldeinformationen.
Um dies zu umgehen, schrieb ich die
authenticator-browser-extension
Knoten-Modul, die könnte nützlich sein, wenn Sie mit Winkelmesser, WebDriver.io oder ähnliche test-Läufer.Verwenden Sie das Modul installieren von npm:
- Und import in der
protractor.conf.js
:Pro-Tipp: denken Sie daran, nicht zu verpflichten, Ihre Anmeldeinformationen mit Ihrem code, sollten Sie mithilfe von env-Variablen statt.
Hoffe, das hilft!
Jan
hankduan ist browsermob-proxy-Lösung funktioniert für mich auf Chrome - aber die neuesten Versionen von browsermob sind mit einem Ding namens littleproxy die keine auth-Header. So hatte ich zu tun
browsermob-proxy -port 9090 --use-littleproxy false
, die Dinge zu arbeiten.Können Sie Windows-Anmeldeinformationen verwenden-Manager zu vermeiden, diese pop-up wird ständig gezeigt, die auf jeden Versuch, sich einzuloggen.
Fügen Sie Ihre Anmeldeinformationen auf dem "Generic" - Kategorie gibt, neu starten, browser (inklusive hintergrund-apps laufen).
Manche Erklärung, die ich derzeit habe: dieses pop-up ist nicht 'browser' bestimmte, es ist 'in der Mitte', die zwischen browser und Anmeldeinformationen für die Domäne Verifikation. Damit browser-Funktionen (Passwort speichern, autofill) funktionieren nicht vollständig. Aus dem gleichen Grund Winkelmesser /Selen etc. nicht die vollständige Kontrolle über das pop-up - es ist durch das design der domain-Authentifizierung.
Nicht ganz sicher, ob es der einzige Grund ist, es gibt einige andere Hinweise:
- möglicherweise müssen Sie auch fügen Sie Ihre Website im IE (IE, nicht mit Chrome) die Liste der vertrauenswürdigen Websites (Chrome schnappt sich Informationen von dort);
- überprüfen Sie "Automatische Anmeldung mit aktuellem Benutzernamen und Kennwort" im IE (nicht Chrome) - kann nicht funktionieren, wenn die Anmeldeinformationen, die Sie für die site sind Verschieden von denen, die Sie verwenden, um den login auf der Maschine.