2 Stimmen

Selenium: Problem beim Löschen von Cookies

Wir verwenden selenium 2.4 mit einem Python-Client und führen die Skripte auf Firefox aus.
Beim Ausführen von delete_all_visible_cookies erhalten wir die Ausnahme:

FEHLER: Befehlsausführungsfehler. Bitte suchen Sie in der Benutzergruppe unter https://groups.google.com/forum/#!forum/selenium-users nach Fehlerdetails aus dem Protokollfenster. Die Fehlermeldung lautet: fehlerhafte URI-Sequenz

Wir haben festgestellt, dass dies auftritt, wenn wir ein Cookie von einem Drittanbieter haben (das wir nicht ändern können), das das Problem verursacht. Wir haben hier in der Vergangenheit danach gefragt und es gibt einen offenen Fehlerbericht von Selenium für dieses Problem, aber es wurde noch nicht behoben.

Um dieses Problem vorübergehend zu umgehen, haben wir das problematische Cookie separat mit delete_cookie gelöscht, bevor wir delete_all_visible_cookies ausführen. Allerdings erhalten wir in Selenium 2 auch für delete_cookie diesen Fehler.

Wir dachten, es könnte am Wert des Cookies liegen (so etwas wie: WSS_GW=V1z%X%X^^^@C@), also haben wir versucht, ihn zu überschreiben und auf 0 zu setzen, bevor wir das Cookie löschen. Dann haben wir den Fehler erhalten:

FEHLER: Das Cookie WSS_GW konnte nicht gelöscht werden.

Die einzige Erklärung, die ich im Web für diese Fehlermeldung gefunden habe ist: deleteAllVisibleCookies schlägt fehl, wenn ein Cookie-Namen das %-Zeichen enthält aber wir haben andere Cookies, die ein _ in ihrem Namen enthalten, und alles funktioniert einwandfrei.

Haben Sie eine Idee, was das Problem sein könnte oder wie wir es überwinden können?

3voto

Avital Punkte 161

Okay, wir haben hier die 2 Probleme gefunden:

  1. Der Cookie-Wert ist problematisch, daher haben wir den Fehler 'malformed URI sequence' erhalten. Um dieses Problem zu lösen, habe ich den Cookie-Wert auf 0 gesetzt, indem ich create_cookie() verwendet habe, bevor die Cookies gelöscht wurden.

  2. Es gibt 2 Cookies mit demselben Namen und Wert, aber mit unterschiedlichen Domains: eines mit 'domain.com' und eines mit 'a.domain.com' (und das Skript öffnete http://b.domain.com). Ich vermute, dass Selenium irgendwie beide Cookies gesehen hat und nach dem Löschen eines Cookies immer noch ein Cookie mit demselben Namen gesehen hat, daher haben wir den Fehler 'Couldn't delete cookie' erhalten. Um das zu lösen, habe ich (nachdem ich den Wert all dieser Cookies geändert habe) den Cookie mit der Domain 'domain.com' mit delete_cookie() gelöscht ohne den rekursiven Parameter, sodass beim Aufrufen von delete_all_visible_cookies() nur noch ein Cookie mit diesem Namen vorhanden war.

Zusammengefasst habe ich Folgendes getan:

für domain in ['.domain.com','a.domain.com','b.domain.com']:
        sel.create_cookie("%s=0"%problematic_cookie,"path=/, domain=%s"%domain)
sel.delete_cookie(problematic_cookie,"path=/, domain=.domain.com") # ohne rekursiv
sel.delete_all_visible_cookies()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X