2010-05-25 4 views
5

Ich habe eine Reihe von C# Selenium-Tests, die ein Cookie löschen müssen, das das HttpOnly-Flag festgelegt hat.Gibt es eine Möglichkeit, einen HttpOnly-Cookie aus C# Selenium-Tests zu löschen?

Leider können die Befehle DefaultSelenium.GetCookie() und DefaultSelenium.DeleteCookie() nicht auf den Cookie zugreifen, da das HttpOnly-Flag gesetzt ist. Ich habe dies bestätigt, indem ich die Flagge von Hand lösche und überprüfe, ob nachfolgende Aufrufe einer dieser Methoden dann glücklicherweise in der Lage sind, den betreffenden Cookie zu manipulieren.

Gibt es eine andere Möglichkeit, dies über den Selenium .NET-Client-Treiber zu tun?

Alle Ideen willkommen!

Antwort

4

Da ich dies über den Client-Treiber nicht konnte, musste ich eine alternative Methode finden. Glücklicherweise verfügt die getestete Webanwendung über eine Auswahl von Testseiten, die eine Interaktion mit dem Sitzungscookie ermöglichen (da es sich um den HttpOnly-Cookie handelt, auf den ich zugreifen wollte), sodass ich mein Ziel durch die Automatisierung dieser Seiten erreichen konnte.

Für alle anderen, die dieses Problem auftritt, gibt es eine gute SO answer here darüber, wie HttpOnly in ASP.NET gebrannt wird.

Darüber hinaus zeigt this SO answer, wie HttpOnly über die web.config der App manipuliert werden kann, mit der Einschränkung, dass es nur aktiviert werden kann, nicht aus.

Jeder, der seine Anwendung zu Testzwecken ändern möchte, sollte this workaround ausprobieren, indem er im Grunde die Session_Start-Methode in Global.asax ändert, um das HttpOnly-Flag zu entfernen, damit Clientskript zugänglich ist. Diese Art von Problemumgehung sollte jedoch nur in einer Testumgebung verwendet werden, da sie die Sicherheitslücke öffnet, die HttpOnly zum Schließen eingeführt hat - nämlich eine XSS-Sicherheitslücke. Jeff Atwood schrieb einen guten Blog-Eintrag darüber here.

+0

Dank Ben, rettete mich eine Menge Zeit. –

Verwandte Themen