_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)
;unsere selbstgemachte exitfunktion Func _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
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 ) $oLinks = _IELinkGetCollection($oIE) ; alle Links werden als objekte gespeichert 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 |
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%"> </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&&google.fade&&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"> [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url] |
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&&google.fade&&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" ) |