- Offizieller Beitrag
alpines:
_IECreate mit default Parametern verwendet _IELoadWait! - Dein Do-Until ist also für die Katz, du läufst in den ClientDisconnected-Error.
Deshalb: $oIE = _IECreate("URL", 0, 1, 0)
alpines:
_IECreate mit default Parametern verwendet _IELoadWait! - Dein Do-Until ist also für die Katz, du läufst in den ClientDisconnected-Error.
Deshalb: $oIE = _IECreate("URL", 0, 1, 0)
@BugFix die Do-Until Schleife ist nicht für die Katz, weil er nicht für den Client-Disconnected-Error gedacht ist.
Der LoadWait Parameter ist irrelevant für den den 'Browser Creation Failed' Error _IECreate (Browser Object Creation Failed).
Der IE startet nämlich ziemlich teilweise ziemlich unzuverlässig, weil er das Objekt nicht erstellen kann, mit der Schleife ist gewährleistet, dass nur weitergearbeitet wird wenn der Browser auch wirklich gestartet ist.
Ich hab ab und zu sekundenlang den Browser Creation Failed Error bis er den Browser endlich richtig starten kann.
Führ das mal aus und poste den Inhalt der Konsole:
AutoIt Alles anzeigen#include <IE.au3> _IEErrorNotify(False) Do $oIE = _IECreate("URL") Until IsObj($oIE) $oColl = _IETagNameAllGetCollection($oIE) For $oObj In $oColl If $oObj.TagName = "iframe" Then ConsoleWrite("iframe gefunden" & @CRLF) If $oObj.Id = "uiMainBar_mnuMain_radInnerMenu_m0_m0_m1" Then ConsoleWrite("uiMainBar gefunden" & @CRLF) Next _IEQuit($oIE)
==> Variable must be of type "Object".:
For $oObj In $oColl
For $oObj In $oColl^ ERROR
Dann entferne doch alle relevanten Daten aus der Source. Wir brauchen die Struktur der Seite um die Web-Elemente und deren Anordnung feststellen zu können.
Der Sourcecode ist 1018 zeilen lang aber hier...:
Es wird mit Ajax und viel Javascript gearbeitet also gehe ich mal davon aus das es tatsächlich in einem Frame drinne liegt, da die Id im Source überhaupt nicht zu sehen ist.
Oder die Id ist auf einem neuen Tab / auf einem neuen Fenster und du hantierst mit der falschen Id herum.
Es wird mit Ajax und viel Javascript gearbeitet also gehe ich mal davon aus das es tatsächlich in einem Frame drinne liegt, da die Id im Source überhaupt nicht zu sehen ist.
Oder die Id ist auf einem neuen Tab / auf einem neuen Fenster und du hantierst mit der falschen Id herum.
Die ID ist in einem Knopf zum ausdrucken und bei dem kann ich untersuchen finden und dort finde ich die beschriebene Id
Kannst du mal ein Foto von dem Browser hochladen wo du die sensiblen Daten einfach schwarz übermalst? (Mit DOM Explorer und der Id)
Mach ich
Langt das oder brauchst du mehr? :3
Ich bin mir nicht ganz sicher aber es könnte an der Tabelle weiter oben liegen. Kannst du das Script was ich dir gepostet hab nochmal ausführen?
Normalerweise sollte er keinen Fehler schmeißen, schon gar nicht den den du gepostet hast.
immernoch der gleiche fehler
Wird der Browser vernünftig gestartet, wird die Seite angezeigt? Pack mal ein Sleep(10000) nach der Do-Until-Schleife und schau mal ob er dann was postet.
Also ja die seite öffnet sich und alles wird normal gestartet.
#include <IE.au3>
_IEErrorNotify(False)
Do
$oIE = _IECreate("")
Until IsObj($oIE)
$oColl = _IETagNameAllGetCollection($oIE)
Sleep(10000)
For $oObj In $oColl
If $oObj.TagName = "iframe" Then ConsoleWrite("iframe gefunden" & @CRLF)
If $oObj.Id = "uiMainBar_mnuMain_radInnerMenu_m0_m0_m1" Then ConsoleWrite("uiMainBar gefunden" & @CRLF)
Next
_IEQuit($oIE)
Alles anzeigen
Ich habs so gemacht und es kommt immernoch der gleiche fehler nur das jetzt ein kleiner sleep dabei ist
Logischerweise musst du das Sleep vor der TagName Funktion setzen, das war doch der Witz daran...
#include <IE.au3>
_IEErrorNotify(False)
Do
$oIE = _IECreate("")
Until IsObj($oIE)
Sleep(10000)
$oColl = _IETagNameAllGetCollection($oIE)
For $oObj In $oColl
If $oObj.TagName = "iframe" Then ConsoleWrite("iframe gefunden" & @CRLF)
If $oObj.Id = "uiMainBar_mnuMain_radInnerMenu_m0_m0_m1" Then ConsoleWrite("uiMainBar gefunden" & @CRLF)
Next
_IEQuit($oIE)
Alles anzeigen
==> Variable must be of type "Object".:
For $oObj In $oColl
For $oObj In $oColl^ ERROR
Damit?
#include <IE.au3>
_IEErrorNotify(False)
Do
$oIE = _IECreate("google.de")
Until IsObj($oIE)
$oColl = _IETagNameGetCollection($oIE, "iframe")
ConsoleWrite("iframe Count: " & @extended & @CRLF)
$oColl = _IETagNameGetCollection($oIE, "a")
ConsoleWrite("a Count: " & @extended & @CRLF)
$oColl = _IETagNameAllGetCollection($oIE)
ConsoleWrite("Tag Count: " & @extended & @CRLF)
_IEQuit($oIE)
Alles anzeigen
iframe Count: 1
a Count: 1
Tag Count: 1
Genau das war zu erwarten. Probier das hier mit deinem Link aus und streich bitte die sensiblen Daten raus, den Link muss ich trotzdem sehen:
Den Link den du rausbekommst kannst du dann versuchen bei deinem eigentlichen Id Script einzufügen.
der link:
Der fehler:
==> Variable must be of type "Object".:
For $oObj In $oColl
For $oObj In $oColl^ ERROR
Ich meinte den Link den du in die Konsole vom Script bekommst, nicht den den du einfügst.
Wenn du dir mal den Source mit FileWrite("debug.html", _IEDocReadHTML($oIE)) ausgibst (nach dem Do-Until), kommt da was vernünftiges raus?
#include <IE.au3>
_IEErrorNotify(False)
Do
$oIE = _IECreate("https://servicecenter-test.controlware.de/Tools/TicketDetailDialog/TicketDetailDialog.aspx?ticketid=IN1603759")
Until IsObj($oIE)
FileWrite("debug.html", _IEDocReadHTML($oIE))
$oColl = _IETagNameGetCollection($oIE, "iframe")
For $oObj In $oColl
ConsoleWrite($oColl.src & @CRLF)
Next
Nope
==> Variable must be of type "Object".:
For $oObj In $oColl
For $oObj In $oColl^ ERROR