Ich arbeite an einem Projekt für einen Kunden mit Ruby & amp; Watir. Er fordert, dass die Sitzung wiederhergestellt wird, wenn die Anwendung neu geladen wird (um seine Anmeldestatus zu speichern). Dies ist das normale Verhalten von Chrome (scheint es), und Firefox hat die Option, dies auch zu tun.
Ich habe alles versucht, was mir einfällt, und ich kann nicht glauben, dass dies mit watir-webdriver funktioniert. Ich habe Watir angewiesen, ein bestimmtes Profil zu verwenden (was vermutlich das Problem hätte lösen können), habe sichergestellt, dass alle Einstellungen korrekt sind (was sie sind, weil sie funktionieren, wenn ich den Browser selbst starte). Ich habe Chrome mit verschiedenen Switches und Profiloptionen ausprobiert, von denen ich dachte, dass sie helfen könnten. Nichts.
Die Frage ist also, warum passiert das und was kann ich tun, um dieses Problem zu lösen oder zu umgehen? Mir sind an dieser Stelle die Ideen fast vollständig ausgegangen. Ich habe sogar versucht, die Cookies in IRB manuell zu speichern und neu zu laden, aber ohne Erfolg ...
Ich weiß, dass es möglich sein muss, wenn ich mich manuell bei den Webseiten anmelde, den Browser schließe und ihn wieder öffne. Ich bin immer noch eingeloggt. Ich muss genau dieses Verhalten reproduzieren, aber irgendwas läuft irgendwo schief zwischen der manuellen Instanz von Chrome / Firefox und der von Watir gesteuerten Instanz.
Zu guter Letzt möchte ich erwähnen, dass ich festgestellt habe, dass wenn ich mein Profil anwähle, es meine bisherigen Einträge lädt, aber keines der Cookies. Es verwirrt mich mehr und mehr.
Wenn mir jemand helfen kann, würde ich es sehr schätzen.
Nun, die gute Nachricht ist, dass ich eine Lösung gefunden habe. Ich wollte es teilen, für den Fall, dass jemand anderes mit diesem Problem meinen Weg in meine Schuhe findet. Ich entschuldige mich aufrichtig bei denen von euch, die es getan haben.
Meine mögliche Lösung war wie folgt:
Ich werde bemerken, dass ich im selen-webdriver selbst ziemlich viel Code optimieren musste, um alles reibungslos laufen zu lassen. watir-webdriver sitzt auf Selen-webdriver.
Ich glaube, dass webdriver von Anfang an Sitzungen immer mit einem sauberen Cookie startet.
Dies kann die Dinge ein wenig schwierig machen, wenn Sie versuchen, einen Test zu machen, der das Schließen und Wiederöffnen des Browsers simuliert (was wirklich in vielerlei Hinsicht ist, den Browser mehr zu testen als die Webseite, da der Webserver wirklich hat keine Möglichkeit zu wissen, dass der Browser geschlossen und wieder geöffnet wurde)
Wenn Sie versuchen möchten, Cookies zu speichern und wiederherzustellen, wird ein wichtiger Vorbehalt durch das Lesen einiger der webdriver docs im Abschnitt über Cookies angezeigt, wo dies steht.
Bevor wir diese nächsten Schritte verlassen, könnten Sie daran interessiert sein Verständnis, wie man Cookies benutzt. Zuallererst müssen Sie auf dem sein Domäne, für die der Cookie gültig sein soll. Wenn Sie versuchen, voreinzustellen Cookies, bevor Sie mit einer Website interagieren und Ihre Homepage ist groß / dauert eine Weile, um eine Alternative zu laden ist eine kleinere Seite zu finden Auf der Website ist die 404-Seite normalerweise klein ( Ссылка )
Wenn Sie also versuchen, Cookies zu speichern und sie nach dem Zurücksetzen des Browsers wiederherzustellen, müssen Sie möglicherweise zu einem anderen Ort auf der Website navigieren, bevor Sie versuchen, die Cookies erneut zu erstellen.
Ich würde das über IRB versuchen und sehen, was Sie bekommen
Wenn Sie einen vorhandenen Ordner als user-data-dir
switch verwenden, behalten Sie alle Dateien und Sitzungen, nachdem der Browser geschlossen wurde. Andernfalls erstellt er einen Ordner und löscht ihn anschließend (mit allen Cookies, tmp-Dateien und Sitzungen).
Sie können also alle vorhandenen Profile verwenden, die sich wie hier beschrieben hier befinden, oder den Standardpfad bei chrome://version/
url
In meinem Fall ist es /Users/mikhail/Library/Application Support/Google/Chrome/Default
Aus irgendeinem Grund wäre der richtige Pfad dieser String ohne den letzten '/ Default' Teil des Pfades:
%Vor%In diesem Fall behalten Sie den gesamten Verlauf und die installierten Erweiterungen bei.
Oder einfacher:
%Vor% In diesem Fall sollte some folder
existieren und Sie werden ein neues Profil von Grund auf erstellen.
Tags und Links google-chrome firefox selenium-chromedriver webdriver watir-webdriver