Ich benutze den Rubin-Juwel von watir-webdriver. Es startet den Browser (Chrome) und beginnt mit dem Laden einer Seite. Die Seite wird zu langsam geladen und watir-webdriver löst einen Zeitüberschreitungsfehler aus. Wie kann ich verhindern, dass der Browser die Seite lädt?
%Vor%Es sieht so aus, als ob der Browser vor dem Laden der Seite nicht auf andere Befehle reagiert. Wie kann ich den Browser zwingen, die Seite, die er lädt, wegzuwerfen und den nächsten Befehl auszuführen?
AKTUALISIERT
Ich habe ein interessantes Fähigkeitsflag gefunden loadAsync Ссылка Vielleicht kann zur Lösung dieses Problems nützlich sein? Ich verstehe noch nicht, wie man watir (webdriver) macht, um das beim Starten des Chrometreibers einzustellen. Diese Flagge wurde hier eingeführt Ссылка
Es gibt ein paar verschiedene Möglichkeiten, um das zu tun, was Sie wollen, aber hier ist, was ich tun würde:
%Vor%Wenn Sie viele Seiten haben, die Sie zur Bestätigung der Zeitüberschreitung laden möchten, legen Sie sie in ein Array:
%Vor%UPDATE für den Machbarkeitsnachweis. Dieses Skript fährt immer mit Schritt 2 fort. Die Rettung ist nicht einmal für das zweite Goto notwendig, wird aber für eine klarere Ausgabe verwendet. Wie unterscheidet sich Ihr Skript davon?
%Vor%Sie können Google anhalten, indem Sie mit AutoIT die Seite laden, um die Esc-Taste zu senden. Dies ist ähnlich dem, was Sie ursprünglich versucht haben, aber mit AutoIT direkt und nicht mit dem zerbrochenen Watir :: Browser-Objekt.
%Vor% Hinweis: Ich habe versucht, autoit.ControlSend("Google", "", "", "{ESC}")
zu verwenden, damit der Browser nicht das aktive Fenster sein muss. Während es funktionierte, wenn es von selbst ausgeführt wurde, konnte ich es aus irgendeinem Grund im obigen Skript nie zum Laufen bringen (dh der Schlüssel wurde gesendet, aber der Browser reagierte nicht wie erwartet).
Ich kämpfe seit einiger Zeit mit diesem Problem, ich weiß, dass dieser Beitrag aus dem Jahr 2012 stammt, aber ich habe immer noch nichts gefunden, was dieses Problem löst. Also habe ich eine Arbeit gemacht.
%Vor%Der zusätzliche Code, mit dem Ihre Cookies gespeichert und wiederhergestellt werden, ermöglicht es Ihnen, bei den von Ihnen verwendeten Websites angemeldet zu bleiben. Das ist scheiße, aber es ist die einzige Arbeit, die ich mir vorstellen kann. Auch das war 2012. Wenn jemand etwas findet, das besser funktioniert, korrigiere mich bitte.
Ich hatte auch das Problem der Timeouts. Mein Verständnis von Online-Forschung ist, dass nach Selenium WebDriver ein Timeout auftritt, es in schlechte Form kommt und sich schlecht benimmt (Multithreading-Problem). Ich habe die hier gefundenen Ratschläge befolgt:
Ich habe eine aktive Löschung (anstelle von browser.close) und einen Neustart von Watir::Browser
nach jeder Ausnahme-Rettung implementiert.
Tags und Links ruby selenium-chromedriver webdriver watir watir-webdriver