AutoIT und das Ajax IE Problem

AutoIT eignet sich ja bestenfalls zum Automatisieren bzw. testen von Webseiten im Internet Explorer, was aber wenn Ajax verwendet wird?

Normalerweise erhält man mit folgender Funktion ein HTML-Element in AutoIT:

_IEGetObjByName($oIE,$value)

Wird dieses aber erst durch eine vorherige Aktion per Ajax im HTML-Code eingebunden, dann empfiehlt sich eine Warteschleife, da andernfalls ein HTML-Objekt gesucht wird, dass noch nicht vorhanden ist und es kommt zum Abbruch.

Die Lösung – AutoIT Warteschleifen

Hier zwei Warteschleifen, um eine bestimmte Zeit auf das gesuchte HTML-Element zu warten:

;AutoIT wartet bis ein bestimmter Elementname vorhanden ist
;$oIE = Internet Explorer Instanz
;$value = name des Elementes (z.Bsp. <input type="text" name="$value" />
;$time = Wartezeit in Millisekunden
Func waitFor($oIE,$value,$time)
	Local $begin = TimerInit()
	$x=0;
	While TimerDiff($begin) < $time AND $x=0
		$x=_IEGetObjByName($oIE,$value)
		sleep(10)
	WEnd
	Return $x
EndFunc

;AutoIT wartet bis eine bestimmte Element-ID vorhanden ist
;$oIE = Internet Explorer Instanz
;$value = name des Elementes (z.Bsp. <div id="$value" />
;$time = Wartezeit in Millisekunden
Func waitForID($oIE,$value,$time)
	Local $begin = TimerInit()
	$x=0;
	While TimerDiff($begin) < $time AND $x=0
		$x=_IEGetObjById($oIE,$value)
		sleep(10)
	WEnd
	Return $x
EndFunc

Ein Gedanke zu „AutoIT und das Ajax IE Problem“

  1. Juchuuu warum bin ich da nicht früher drauf gekommen. Endlich funktioniert mein Script ohne die lästigen Sleep Anweisungen, womit das Programm entweder im Schneckentempo oder alternativ nur ausschließlich auf meinem oder schnelleren Rechnern funktioniert. Super einfache Lösung und trotzdem sehr effektiv.

Kommentare sind geschlossen.