autoit Syntax _IE.au3

_IE.au3 Tutorial für absolute Anfänger

Als erstes mal will ich aber sagen das Ihr Grundkenntnisse der GUI benötigen werdet (Koda Form Designer)
Ihr müsst wissen wie ihr dann diese Buttons etz. verwendet das zeige ich zwar gehe aber nicht näher drauf ein
Ihr sollt zur einfachen Benutzung euch Firefox und das Addon "Firebug" runterladen da das meiste darin einfach und schnell zu finden ist.
Ich werde hauptsächlich versuchen wenig in den "Domelementen zu graben und diese Methoden anders zu verwirklichen die vielleicht einfach sind.

Das Tutorial soll nun mal einen einfachen Einblick in IE.au3 geben, dessen Möglichkeiten die viel zu oft unterschätz wird offen legen und auch manche die mit dem derzeitigen Problemen der FF.au3 Funktionen eine Option bieten.

Auch möchte ich vorweg klarstellen das sich die Rechtschreibung und ich seit Jahren auf Kriegsfuss befinden, wenn ihr also beschwerden habt über meine Rechtschreibung etz. Bitte an das Salzamt wenden. (Werde mich aber bemühen)

Inhalt:
1. Öffnen einer IE Browseranwendung
2. Öffnen einer IE Browseranwendung in einer GUI ( Embedded )
3. Das Navigieren zwischen Seiten
4. Das Schliessen von IEFenster
5. Das Klicken auf Bilder
6. Das Klicken auf Link´s
7. Warten bis eine Seite geladen wurde
8. Das Ausfüllen von Formularen ( Form ) und Absenden
9. Die Wichtigsten _IEAktion Befehle
10. Webseiten obtisch bearbeiten

Start Tutorial

Wichtig: Das $oIE ist immer beim erstellen des zu behandelnden IE Objekts zu Deklarieren

#include <IE.au3>
Global $oIE = _IECreate( "www.autoitbot.de")
Global $oIE = _IECreateEmbedded()

 

1. Öffnen einer IE Browseranwendung


Als Erstes Schauen wir uns mal die Parameter an

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#include <IE.au3>

 

$s_Url = "www.google.de" ;Deine Gewünschte URL die beim Start geladen wird

; Standart ist "about:blank"

 

$f_tryAttach = 0 ; Ein Vorhandenes Fenster Ansteuern oder ein Neues

; 0 = Neues Fenster (Standart)

; 1 = Vorhandenes Verwenden wenn nicht neues erstellen

 

$f_visible = 1 ;Sichtbarkeit des Fensters

; 0 = Unsichtbares Fenster

; 1 = Sichtbar (Standart)

 

$f_wait = 1 ; Warten bis seite geladen wurde

; 0 = Nicht warten Sofort weitermachen (Nicht zu empfehle wenn du etwas Im browser erledigen willst)

; 1 = Warten bis Seite Geladen (Standart)

 

$f_takeFocus = 1 ;Fenster den Fokus übergeben (wird dann zum Aktivierten Fenster)

; 0 = Nicht Fokusieren

; 1 = Fokus Übertragen (Standart) ( Bei Unsichtbarkeit erhällt es nicht den Sichtbaren Fokus)

 

$oIE = _IECreate( $s_Url, $f_tryAttach , $f_visible , $f_wait , $f_takeFocus )

 

Und nun Praktische Anwendungsmöglichkeiten

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

; Versuche ein Vorhandenes Fenster zu Autoitbot zu verbinden wenn nicht ein neues erstellen

$oIE = _IECreate( "www.autoitbot.de", 1)

 

; Neues Unsichtbares Fenster zu Google

$oIE = _IECreate( "www.google.at", 0, 0)

 

;Extremes Beispiel

; Neues fenster zu google bei dem nicht gewartet werden soll bis es fertig ist und ohne Fokus

$oIE = _IECreate( "www.google.at", 1, 0, 0, 0)

 

2. Öffnen einer IE Browseranwendung in einer GUI ( Embedded )


Hier ein Einfaches "Praxisbeispiel"welches einfach zu verstehen ist und dementsprechend Auskommentiert wurde

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <IE.au3>

 

Opt("GUIOnEventMode", 1) ; Einfacher in der verwendung da man Funktionen Direkt aufrufen kann durch Buttons etz.

 

 

; Wir erstellen ein Com objekt welches in unserer Gui angezeigt wird

_IEErrorHandlerRegister()

$oIE = _IECreateEmbedded()

 

;Nun erstellen wir unsere Gui

GUICreate("Gui mit IE embedded", 600, 600)

GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ; durch eventmode muss das gesetzt werden und auch die Funktion dazu erstellt werden

 

;Nun das wichtige Obj das zu unserem Browser wird da wir ja $oIE einbinden

$GUIActiveX = GUICtrlCreateObj($oIE, 10, 10, 580, 560)

 

_IENavigate($oIE, "http://www.google.de"); Dazu Später noch eine genaue Erklärung

 

GUISetState() ; Anzeigen der GUI

 

; Wartet, bis der Benutzer das Fenster schließt

While 1

Sleep(1000)

WEnd

 

;unsere selbstgemachte exitfunktion

Func _exit()

Exit

EndFunc   ;==>_exit

 

3. Das Navigieren zwischen verschiedenen Seiten


Erklärung

 

AutoIt – Quellcode

1

2

$oIE ; ist unser zufor geöffnetes Obj , entweder eigenes Fenster oder eine embedded variante

_IENavigate($oIE, "www.google.de") ; danach follgt der link


Praxisbeispiel 1
( Wir erstellen uns ein IE fenster wie wir aus 1. kennen und Navigieren auf 3 Verschiedene Seiten in Folge )

 

AutoIt – Quellcode

1

2

3

4

5

6

#include <IE.au3>

 

$oIE = _IECreate( "www.autoitbot.de"); Wir Öffnen IE mal mit Autoit

_IENavigate($oIE, "www.google.de") ; nachdem wir geladen haben wandern wir Schnurstrax auf Google

_IENavigate($oIE, "www.yahoo.de") ; schaun uns das neuste auf Yahoo an

_IENavigate($oIE, "www.autoit.at") ; da wir aber an promienws kein Interresse haben sind wir schnell wieder bei nem Autoit Forum


Praxisbeispiel 2
(Wenn Wir uns Google genauer Ansehen und z.B. AutoItbot darin suchen ändert sich oben der Link … das versuchen wir mal Direkt)

 

AutoIt – Quellcode

1

2

3

4

5

6

7

#include <IE.au3>

 

$suche = "Ich habe Feuer gemacht Uga Aga" ;suchen wir bei google

$suche = StringReplace($suche," ","+") ;da google in der "linkleiste" keine leerzeichen will sonder + wandeln wir leerzeichen in + um

$oIE = _IECreate( "www.google.at")  ;wir könnten diese suche auch schon beim öffnen machen allerdings erklär ich grade das Navigate

 

_IENavigate($oIE, "http://www.google.com/search?q="& $suche ) ;das währe unsere suche

 

4. Das Schliessen von IEFenster


Das ist vorallem dann Wichtig wenn ihr unsichtbare fenster benützt da diese dan der User sollte euer scrippt beenden nicht mehr auf normalen wege schliessen können und den taskmanager benützen müssen. ( bei embedded versionen nicht benötigt da diese mit gui selbst Schliessen)

 

AutoIt – Quellcode

1

2

3

#include <IE.au3>

$oIE = _IECreate( "www.google.at") ;Öffnen wir ein Fenster

_IEQuit($oIE) ; machen wir es wieder zu ^^


Ein TIPP

 

AutoIt – Quellcode

1

2

3

4

Func _exit()

_IEQuit($oIE)

Exit

EndFunc   ;==>_exit

 

5. Das Klicken auf Bilder


Zuerst die Grundlagen, um zu sehen wie wir etwas ansteuerm

 

AutoIt – Quellcode

1

2

3

4

_IEImgClick ($oIE, "Eindeutiger Parameter des Bildes", "Suchoption")

; src = (Standard) Bild wird nach seiner Quelle identifiziert

; name = Bild wird anhand seines Namens identifiziert

; alt = Bild wird anhand seines Alternativtextes identifiziert


Hier ein Paar praxisbeispiele
Autoit.at Button im Autoitbot.de Forum Anklicken

 

PHP-Quelltext

1

[url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url]

 

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

;Also entweder über "slt" oder "src"

;"src"

#include <IE.au3>

$oIE = _IECreate( "www.autoitbot.de") ;Öffnen wir ein Fenster

_IEImgClick ($oIE, "http://www.autoit.at/button.png", "src")

;=============== oder aber

;"alt"

#include <IE.au3>

$oIE = _IECreate( "www.autoitbot.de") ;Öffnen wir ein Fenster

_IEImgClick ($oIE, "AutoIt.@ – Tutorials, Tools, Skripte, UDF's, Forum", "alt")


Autoit.at Toolsbereich auf "spiele" Klicken

 

AutoIt – Quellcode

1

2

3

#include <IE.au3>

$oIE = _IECreate( "http://www.autoit.at/Mehr-Tools.html") ;Öffnen wir ein Fenster

_IEImgClick ($oIE,"images/buttons/autoitspiele.png", 'src')

 

6. Das Klicken auf Link´s


Wir Können natürlich auch Link´s "Klicken" anstatt direkt aufzurufen, das ist vorallem dan ein vorteil wenn wir nicht den ganzen link kennen.

Linkklick über den Index ( 0 ist der erste link auf einer seite )
Diese Methode empfehle ich nicht

 

AutoIt – Quellcode

1

_IELinkClickByIndex ($oIE, 2)

Dann können wir Den link auch per angezeigten text Knlicken (dieser sieht bei html In etwa so aus

 

PHP-Quelltext

1

  [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url] 


und würde bei IE uns So aussehen (sehr brauchbar)

 

AutoIt – Quellcode

1

_IELinkClickByText ($oIE, "Shoutbox")

und dann gibt es noch meine Inoffizielle Methode die ich als UDF vorbereitet habe In einem beispiel

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

Global $oIE = _IECreate("www.wikipedia.de")

_IELinkClick("pedia.or") ; klickt auf den link > http://de.wikipedia.org/ <

; weil pedia.or darin vorkommt ( man sollte es sogenau als möglich angeben um sicher den erwünschten treffer zu erziehlen )

Func _IELinkClick($sLink)

    $oLinks = _IELinkGetCollection($oIE) ; alle Links werden als objekte gespeichert

For $oLink In $oLinks

    If StringInStr($oLink.href,$sLink) Then ;befindet sich der teil den wir anklicken wollen in einem Opjekt dann

        _IEAction($oLink,"click") ;Klick auf das objekt

        Return True ;Rückgabe True

    EndIf

Next

Return SetError(1) ; Link nicht gefunden

EndFunc

 

 

7. Warten bis eine Seite geladen wurde


In den meinsten Funktionen ist das Warten Standartmässig aktiviert was heist das brauchen wir selten
ABER
NAtürlich kann es vorkommen das wir Diese Funktion/funktionen benötigen und zwar bei spiele die einen sogenanten "reload" haben
Das bedeutet die seite lädt sich nach bauabschluss oder alle 5 minuten um Info´s zu zeigen oder veränderungen etz
In diesem fällen ist Es unelässlich das wir vor einem Klick diese funktion aufrufen da sonnst unser klickbefehl Ins leere gehen würde
und das könnte bei nicht Ordnungsgemässen scrippten sogar zum Absturz führen.
Ausserdem Kann diese Funktion Zeitgleich Usersimulation durchführen
 

 

AutoIt – Quellcode

1

_IELoadWait ( $oIE , $i_delay = 0 , $i_timeout = -1 )


Das Bedeutet
$oIE ist die Internetexplorer Applikation ( unser Browser )
$i_delay ist die Zeit Wann die funktion gestartet werden soll In millisecunden standart 0 also sofort
$i_timeout ist die zeit die er maximal wartet bis er weitergeht Standart Siind 5 min ( 300000 ms)

Wie meinte ich das mit Usersimulation? Ich zeigs euch
 

 

AutoIt – Quellcode

1

2

_IELoadWait ( $oIE , Random(300,3500,1) )

;Nun würde das _IELoadWait erst 0,3 – 3,5 sec warten bis es weitermacht welches die klickzeit von user simmuliert

Wir Können nun Direkt oben nach den Include´s alle $i_timeout festlegen
und zwar mit
 

 

AutoIt – Quellcode

1

_IELoadWaitTimeout ( 1000*60*10 )


Das Bedeutet
;Nun hätten alle unsere danachfolgenden _IELoadWait einen Standart von 10 minuten [/autoit]
 

 

8. Das Ausfüllen von Formularen ( Form ) und Absenden


Gucken wir zunächst mal auf Google.at um zu sehen was wir da eigendlich für ein Inputfeld haben

 

PHP-Quelltext

1

<form onsubmit="google.fade=null" name="f" action="/search"><table cellspacing="0" cellpadding="0"><tbody><tr valign="top"><td width="25%">&nbsp;</td><td nowrap="" align="center"><input type="hidden" value="de" name="hl"><input type="hidden" value="hp" name="source"><input value="" title="Google-Suche" class="lst" size="55" name="q" maxlength="2048" onblur="google&amp;&amp;google.fade&amp;&amp;google.fade()" autocomplete="off"><br><input type="submit" onclick="this.checked=1" class="lsb" value="Google-Suche" name="btnG"><input type="submit" onclick="this.checked=1" class="lsb" value="Auf gut Glück!" name="btnI"></td><td width="25%" nowrap="" align="left" id="sbl" style="opacity: 1;"><font size="-2">&nbsp;&nbsp;  [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url] 
&nbsp;&nbsp;  [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur f
ür registrierte Mitglieder sichtbar.][/url]  </font></td></tr><tr><td align="center" colspan="3"><font size="-1"><span class="fade" style="text-align: left; opacity: 1;">Suche: <input type="radio" checked="" value="" name="meta" id="all"><label for="all"> Das Web </label> <input type="radio" value="lr=lang_de" name="meta" id="lgr"><label for="lgr"> Seiten auf Deutsch </label> <input type="radio" value="cr=countryAT" name="meta" id="cty"><label for="cty"> Seiten aus Österreich </label> </span></font></td></tr></tbody></table><input type="hidden" name="aq" value="f"><input type="hidden" name="oq" value=""><table cellspacing="0" cellpadding="0" class="gac_m" style="visibility: hidden; left: 270px; top: 213px; width: 485px;"></table></form>

Nebenbei: Firebug is schon ein feines Tool

Anmerkung
_IEbasiert auf Objekten das heist wir suchen objekte und tretten dennen In den *****
Achne ich meinte wir bearbeiten das diese objekte
Aus der FF.au3 kennen es viele das sie mit Array´s und Strings arbeiten, das ist bei IE bischen Anders aber keinesfalls schwerer

weitergehts, wir haben nun unsere Form und gehen ihr mal an den Kragen

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

Global $oIE = _IECreate("www.google.at")

;<form onsubmit="google.fade=null" name="f" action="/search">

;aha unsere Form heist "f" gut dan rufen wir sie

$oForm = _IEGetObjByName ( $oIE , "f" ) ;unsere Form anhand des Namens

; So wo ist nun unser Inputfeld

; <input value="" title="Google-Suche" class="lst" size="55" name="q" maxlength="2048" onblur="google&amp;&amp;google.fade&amp;&amp;google.fade()" autocomplete="off"

; ahh da isse ja und sie nennt sich "q"

$oInput = _IEFormElementGetObjByName($oform, "q"); fir greifen auf das Obj der Form und holen uns das obj des Inputfeldes

_IEFormElementSetValue($oInput, "Autoit ist Cool") ; nun setzen wir den wert des obj neu ( unser inputfeld )

;nun nurnoch Absenden

; <input type="submit" onclick="this.checked=1" class="lsb" value="Google-Suche" name="btnG">

_IEFormSubmit ( $oForm ) ; genau wir sagen einfach der form das sie nun Submit machen soll, wie brav das IE

 

Ich hab auch non einen Login für Wurzelimperium vorbereitet

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#include <IE.au3>

 

Global $oIE = _IECreate("www.wurzelimperium.de")

 

$sServer = "Server 30"

$sUsername = "Autoitbot"

$sUserPasswort = "autologin"

 

 

$oForm = _IEGetObjById($oIE, "form_login") ; Obj der Form ausgelesen

 

$oServer = _IEFormElementGetObjByName($oForm, "server") ;hier wird die combobox ausgelesen

_IEFormElementOptionSelect($oServer, $sServer, 1, "byText") ; Hier wird der Combobox eine selection übertragen

 

$oName = _IEFormElementGetObjByName($oForm, "USR") ; inputfeld Name

_IEFormElementSetValue($oName, $sUsername )

 

$oPasswort = _IEFormElementGetObjByName($oForm, "dummy") ;inputfeld Passwort

_IEFormElementSetValue($oPasswort, $sUserPasswort)

 

_IELinkClickByText($oIE, "Einloggen") ;Linkclick auf "Einloggen"

 

 

9. Die Wichtigsten _IEAktion Befehle


Befehle Für den Browser

 

AutoIt – Quellcode

1

2

3

4

5

_IEAction($oIE,"back"); Geht in der Historyliste einen Eintrag rückwärts.

_IEAction($oIE,"forward"); Geht in der Historyliste einen Eintrag vorwärts.

_IEAction($oIE,"stop"); Beendet alle nicht erledigte Aufrufe, Downloads und dynamische Seitenelemente, wie z.B. Hintergrundgeräusche und Animationen.

_IEAction($oIE,"home"); Geht zur momentanen Home- oder Startseite.

_IEAction($oIE,"refresh"); Aktualisiert den Browser.(auch Frames kann es einzeln refreshen


Befehle Für Objekte die ihr mit _IEGetObjById oder mit _IEGetObjByName erhält

 

AutoIt – Quellcode

1

2

3

_IEAction($oIE,"click"); Simuliert einen Klick auf das angegebene Element.

_IEAction($oIE,"invisible"); Setzt den Status des Objekts auf versteckt.

_IEAction($oIE,"visible"); Setzt den Status des Objekts auf sichtbar.


 

10. Webseiten obtisch bearbeiten


Ist rein optisch und nur für euch sichtbar, man kann damit Homepages wie mit Greasemonkey auf HTML Wege bearbeiten

 

AutoIt – Quellcode

1

2

3

4

5

#include <IE.au3>

 

Global $oIE = _IECreate("www.google.de")

$oInput = _IEGetObjByName($oIE,"f")

_IEDocInsertHTML ($oInput, "Hilfe  Google hällt mich gefangen konnte nur noch diese Nachricht schreiben"&@CRLF&"Helft mir" )