Ich habe kürzlich auf Windows 7, VS2010 und IE8 aktualisiert. Wir haben eine Automatisierungssuite, die Tests mit WaiN gegen IE durchführt. Für diese Tests muss der Anmeldedialog-Handler verwendet werden, um verschiedene AD-Benutzer im IE-Browser zu protokollieren.
Dies funktioniert perfekt, wenn Sie Windows XP und IE8 verwenden, aber jetzt, da Windows 7 dazu führte, dass das Dialogfeld Windows-Sicherheit nicht mehr erkannt wird, wird die Dialogbox gerade ignoriert. Dies ist die Methode, mit der der Browser gestartet wird:
%Vor%irgendwelche Vorschläge oder Hilfe würden sehr geschätzt werden ...
Aus irgendeinem Grund hatte der Code, den Clint gepostet hatte, Kommentare, anstatt den Benutzernamen, das Passwort und das Senden einzugeben, und referenzierte eine undefinierte Methode, aber ansonsten ist es in Ordnung. Hier ist ein kompletter (und funktionierender) Code:
%Vor%Dies kann auch als DialogHandler wie folgt umgestaltet werden:
%Vor%Was ein bisschen schöner ist. Sie können es dann wie folgt verwenden:
%Vor%Wir haben dieses Problem schließlich gelöst, indem wir die Windows Automation 3.0-API verwendet haben, um das Dialogfeld aufzurufen und die Anmeldung zu übernehmen. Dies wurde folgendermaßen durchgeführt:
Sobald der Browser authentifiziert wurde, hängen wir ihn an ein WatiN IE Browser-Objekt an. Der Code folgt unten:
%Vor%Wir haben ein Tool namens UI Spy verwendet, um die Windows-Benutzeroberfläche zu untersuchen. Wenn Sie es gegen XP und Win7 ausführen, können Sie deutlich sehen, wie sich die Struktur der Windows-Sicherheitsdialogbox zwischen den beiden Betriebssystemen geändert hat.
Nicholas Riley Beitrag funktioniert wie ein Charme, jedoch einschließlich der Verwendung von System.Windows.Automation könnte ein wenig schwierig sein. Ich dachte, Microsoft würde dies in die GAC setzen, aber sie nicht, zumindest für mich mit Windows 7 Professional. Ich habe das Automation Toolkit sogar von hier heruntergeladen .
Es zeigt sich, dass hier ein Thema im Stapelüberlauf ist, das anzeigt, wo die DLLs sind, die Sie durchsuchen können, um sie als Referenzen in Ihr Projekt aufzunehmen. Der Link dafür ist hier .
Im Wesentlichen müssen Sie nur zwei DLLs referenzieren. Und UIAutomationTypes.dll (beide im selben Verzeichnis).
Da niemand deine Frage beantwortet hat, werde ich, aber leider ohne fertige Lösung.
Ich habe in diesem Moment kein Windows 7, aber anscheinend ist WatiNs LogonDialogHandler
nicht mit Windows 7 kompatibel, also musst du dein eigenes DialogHandler
schreiben. Der einfachste Weg ist, von BaseDialogHandler
zu erben. Sie können den Quellcode vorhandener Dialoghandler in WatiN betrachten. Ich habe mich selbst sehr einfach und nicht universell für den Umgang mit Zertifikatdialog . WinSpy ++ kann während der Implementierung sehr nützlich sein.
Ich habe versucht, die beiden obigen Automatisierungsbeispiele zu verwenden und festgestellt, dass sie das Szenario nicht behandelt haben, wenn die anderen Anmeldeinformationen gespeichert wurden. In diesem Fall wird nur das Kennwort in der Box angezeigt. In diesem Fall müssen Sie programmgesteuert auf den Abschnitt "Anderes Konto verwenden" klicken. Also habe ich den mitgelieferten Code geändert, um das zu tun und es funktioniert jetzt OK. Hier ist der modifizierte Code:
%Vor%Danke an die anderen, die mich am meisten dorthin gebracht haben.