Failproof Warten, für den IE zu laden
Gibt es einen narrensicheren Weg für das Skript zu warten, bis der Internet-explorer vollständig geladen ist?
Beide oIE.Busy
- und /oder oIE.ReadyState
nicht so funktioniert, wie Sie sollte:
Set oIE = CreateObject("InternetExplorer.application")
oIE.Visible = True
oIE.navigate ("http://technopedia.com")
Do While oIE.Busy Or oIE.ReadyState <> 4: WScript.Sleep 100: Loop
' <<<<< OR >>>>>>
Do While oIE.ReadyState <> 4: WScript.Sleep 100: Loop
Irgendwelche anderen Vorschläge?
Beschreiben Sie bitte, was funktioniert falsch mit konventionellen
Wie es aussieht, nicht warten genug für das laden der Seite, bevor er mit anderen Aktionen, so "Element FEHLER". Wenn ich erhöhte die Wartezeit explizit, es funktionierte.
Ich fand die ein ähnliches Verhalten mal, die Lösung war nur das hinzufügen der zusätzlichen Schleife vor, dass, wie
Ich bin mir nicht sicher, was Sie vorgeschlagen sind.. Kannst du das etwas erläutern Bitte?
Kann nicht glauben, ich bin kommentierte etwas von 2014... Aber ich hatte das gleiche Problem und omega die Antwort wirklich Sinn macht. Die Zeile code vor der main-Schleife ist in der Veranstaltung, dass der code zuvor auf Ihrer Schleife vor der IE tatsächlich der Verarbeitung der Anfrage - also, bevor es zu
Do ... Loop
dass Sie gezeigt haben?Wie es aussieht, nicht warten genug für das laden der Seite, bevor er mit anderen Aktionen, so "Element FEHLER". Wenn ich erhöhte die Wartezeit explizit, es funktionierte.
Ich fand die ein ähnliches Verhalten mal, die Lösung war nur das hinzufügen der zusätzlichen Schleife vor, dass, wie
Do While oIE.ReadyState = 4: WScript.Sleep 100: Loop
. So erste Schritt ist, zu warten, bis die "navigaiting beginnt", und die zweite - bis es abgeschlossen werden.Ich bin mir nicht sicher, was Sie vorgeschlagen sind.. Kannst du das etwas erläutern Bitte?
Kann nicht glauben, ich bin kommentierte etwas von 2014... Aber ich hatte das gleiche Problem und omega die Antwort wirklich Sinn macht. Die Zeile code vor der main-Schleife ist in der Veranstaltung, dass der code zuvor auf Ihrer Schleife vor der IE tatsächlich der Verarbeitung der Anfrage - also, bevor es zu
Busy
. Der code läuft zu schnell und trifft Ihre Schleife vor dem IE hat die chance, zu beschäftigt, so deshalb, es umgeht die Schleife, da es technisch nicht ausgelastet. Sehr intelligent schauen Sie in die Antwort ein, dass ich noch nie betrachtet.InformationsquelleAutor user3408723 | 2014-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dieses, es hat mir geholfen, zu lösen ähnliches problem mit dem IE einmal:
UPD: Drilldown IE Ereignisse, die ich gefunden, dass
IE_DocumentComplete
ist das Letzte Ereignis, bevor die Seite ist eigentlich fertig. So gibt es eine weitere Methode, um zu erkennen, Wann eine web-Seite geladen ist (beachten Sie, dass Sie angeben, die genaue Ziel-URL, die abweichen kann von der Ziel-URL z.B. im Fall der Weiterleitung):InformationsquelleAutor omegastripes
Ich habe für eine sehr lange Zeit bereits erfolgreich mit:
Es wurde perfekt funktioniert, bis heute, wenn ich änderte meine PC und wechselte zu Windows 10 und Office 16. Dann begann es zu arbeiten auf einigen Fällen, aber es gab Zeiten, wenn die Schleife noch nicht abgeschlossen ist. Weder eine der Bedingungen in der Schleife erreicht wurde, so dass die Schleife ENDLOS war.
Nach viel Googeln, ich habe versucht, viele Anregungen, bis ich die Lösung gefunden in diesem Beitrag: Excel-VBA-Controlling-IE-lokales intranet
Die Lösung ist, die URL zu der Liste der vertrauenswürdigen sites in Internet Explorer die Registerkarte Sicherheit. Endlich!
InformationsquelleAutor user3254924
versuchen, dieses Skript auf der oberen, kann dies Ihr problem lösen.
Erklärung:
Powershell ist nicht, dass einige Rechte, wenn Sie ausführen, Skript aus dem normalen Modus
so ist es auch nicht Lesen DH status richtig
und das ist, warum DOM wird nicht geladen
so, script nicht gefunden parameter
InformationsquelleAutor aditya_rahatekar
Einige Jahre später hat es mich auch getroffen. Ich schaute auf die vorgeschlagenen Lösungen und sehr viel getestet. Die folgende Kombination von Befehlen entwickelt, die ich nun in meiner Anwendung.
Die zweite identische Schleife habe ich installiert, nachdem es stellte sich heraus, dass oIE.Busy = True, wurde manchmal nach dem ersten loop.
Grüße,
ScriptMan
InformationsquelleAutor ScriptMan
So, durch das suchen diese Antwort, ich hatte noch Probleme mit dem IE Wartezeit für die Seite vollständig zu laden. In der Hoffnung, dass diese Lösung helfen wird, andere, hier ist was ich getan habe:
Im Grunde, was das tut, ist warten, für 5 50ms Intervalle für die Anzahl der tagnames geladen gedrosselt.
Natürlich, dies ist einstellbar, je nachdem, was Sie wollen, aber das funktionierte für meine Anwendung.
InformationsquelleAutor Poozy101
Wenn Ihre arbeiten mit dem IE auf eine form der Unterwerfung, es ist besser, legen Sie es in ein Sub so können Sie auf die gleiche Sub wiederholt.
Dem Unterschied, dass Ihr verweisen auf das IE-Objekt NACH der
wscript.sleep
. Wenn Sie schauen Ihnen zuerst und vor allem, bevor das Objekt ist geladen. Es könnte Ursache Skript-Fehler.Es sollte
Loop While IE.ReadyState < 4 Or IE.Busy
Aktualisiert. Dank omega.
Ihnen fehlt eine schließende Klammer am Ende der Zeile 2.
InformationsquelleAutor Rich