Lassen Sie den kopflosen Browser das Laden der Seite stoppen

8

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 Ссылка

    
Molfar 26.03.2012, 17:08
quelle

4 Antworten

4

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%     
adam reed 26.03.2012 17:27
quelle
2

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).

    
Justin Ko 27.03.2012 15:55
quelle
0

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.

    
Duck1337 14.07.2014 17:08
quelle
0

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.

    
tudeng 04.02.2015 16:26
quelle