Wie man Selen warten Sie, bis die Seite vollständig geladen in Selen - wrapper für die Excel-VBA?
Was code oder die Funktion für die Selen - wrapper für die Excel VBA verwendet werden, damit das Programm wartet, bis die Seite vollständig geladen werden dann andere Befehle ausführen?
was meinst du mit "voll-Last"? Meinst du, dass die Erreichbarkeit eines bestimmten Elements (das element angezeigt wird)?
ich meinte, dass alle Elemente angezeigt und bearbeitet werden. Im Fall von firefox, wenn man sich auf die Registerkarte der Seite, die Sie betrachten, der Umlauf, was nicht mehr sichtbar ist.
Wie ich schrieb in meiner Antwort auf die "zirkulierende Sache" ist bereits erfolgt systemintern durch Selen. Was genau wollen Sie erreichen später die Straße hinunter. Ich denke, dein problem ist eigentlich ein anderes.
ich meinte, dass alle Elemente angezeigt und bearbeitet werden. Im Fall von firefox, wenn man sich auf die Registerkarte der Seite, die Sie betrachten, der Umlauf, was nicht mehr sichtbar ist.
Wie ich schrieb in meiner Antwort auf die "zirkulierende Sache" ist bereits erfolgt systemintern durch Selen. Was genau wollen Sie erreichen später die Straße hinunter. Ich denke, dein problem ist eigentlich ein anderes.
InformationsquelleAutor MackyMac | 2015-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die neueste version wartet implizit, dass die gezielte element vorhanden ist, bevor die Ausführung der gewünschten Aktion. Zum Beispiel, Fahrer.FindElementById("...").Klicken Sie auf wird standardmäßig versuchen, das element während der 3 Sekunden vor dem auslösen eines Fehlers.
Diese implizite warten können Global definiert:
Sowie individuell :
Setzen Sie das timeout für den server, führt der browser:
Erhalten die neueste version Datum der Arbeit mit dem obigen Beispiel: https://github.com/florentbr/SeleniumBasic/releases/latest
InformationsquelleAutor Florent B.
Kurze Antwort
Selen (auch die ExcelVBA-wrapper) macht dies für Sie. Sie wartet auf die DOM
readyState
zu signalisieren, dass es abgeschlossen ist.Im Fall der Excel-Wrapper, wird dies beim Aufruf
driver.start
ABER
Diese helfen Ihnen nicht, wenn Sie AJAX-Aufrufe oder-Elemente, die die Last über JavaScript und so weiter.
Dort müssen Sie implementieren implizite und explizite wartet um zu überprüfen, ob das element, das Sie versuchen, die Interaktion mit bereits existierenden oder sogar angezeigt.
Macht es keinen Sinn zu warten, bis ALLE Elemente werden sichtbar, wenn Sie interagieren wollen mit einem bestimmten element. In diesem Fall sollten Sie warten, nur für dieses element angezeigt werden soll und dann interagieren Sie mit diesem element.
Wenn Sie aufwendigen mehr auf das eigentliche problem, wir könnten Ihnen viel mehr ausführliche Beratung.
haben Sie versucht: - Treiber.start "firefox", url ? Haben Sie ausgetestet, Wann genau dein code mal aus? Ich meine, wenn er Pässe die "get url" - Teil oder, wenn er mal die es schon gibt?
es geht die Get-URL-dann kann er mal zeigen schon heute die Fehlermeldung " Run-time error '101': WebRequestTimeout: Keine Antwort vom server innerhalb von 30000 Sekunden.."
InformationsquelleAutor drkthng
Ich habe dieses problem auch. Ich habe versucht, sowohl die impliziten und expliziten wartet, aber nicht in der Lage, um den timeout zu warten, länger als 30 Sekunden. Ich habe zwei workarounds.
Die erste ist klunky, aber einfach: nach meiner
.get
oder.click
Veranstaltung, initiiert das laden der Seite habe ich den code angehalten, mit einer messagebox:msgBox "Wait for page to load then click OK."
Die zweite ist ein bisschen mehr verfeinert. Wenn ich weiß, dass meine Seite in der Regel dauert 50 Sekunden zu laden, ich werde in einer Reihe warten, Zeitraum von sagen wir, 45 Sekunden, dann haben Sie das Skript überprüfen, ob ein bestimmtes element bereits geladen wurde, bevor Sie fortfahren:
.verifyTextPresent
hat auch ein timeout von 30 Sekunden, so dass Sie noch verwenden Sie die sleep-Funktion zunächst für das langsame laden der Seite.InformationsquelleAutor jlookup
Hallo mit dieser Referenz warten-für-Seite-laden-in-Selen
Entwickelte ich diesen code:
Sieht es aus, dass der beste Weg ist pseudocode:
Wait until a specific FindElementbyId appears
. Die Lösung präsentiert wird, ist eine Allgemeine Herangehensweise.InformationsquelleAutor Christian Torrez