Oft habe ich mir ein Werkzeug gewünscht, mit dem sich wiederholende Tätigkeiten im Browser automatisiert werden können. Mit iMacros kann aber nicht nur automatisiert werden. Es eignet sich auch zum Testen von Webseiten und zur Gewinnung von Informationen. iMacros gibt es für die Browser Firefox, Chrome, Internet Explorer und für den Professional gibt es den iMacros Browser.
Bei dem iMacros Browser gibt es zwei Varianten, eine Pro- und eine Scripting Edition. Die unterschiedlichen Funktionen können der Übersicht entnommen werden. In diesem Artikel beschreibe ich die Scripting Edition von iMacros. Diese kann zusätzlich mit einem ein breitem Angebot an Programmiersprachen (Windows Scripting Host, Visual Basic 6, Visual Basic .NET, C#, Java, Perl, Python, C++, ASP, PHP, ASP.NET) genutzt werden. Beim Benchmark Test Peacekeeper auf meinem Computer ist der iMacros Browser gegenüber den Internet Explorer Version 8 um 8% schneller. Nun zeige ich an Hand von drei Beispielen wie iMacros genutzt werden kann.
Aufnehmen von Macros

Macro aufzeichnen mit iMacros
Das Aufnehmen funktioniert bei allen Version gleich. Klicken Sie auf den Tab “Record” um den Aufnahmebereich anzuzeigen. Sobald der Button “Record” geklickt wird, beginnt die Aufname des Macros. Die Aufnahme erfolgt so lange bis der “Stop” Button gedrückt wird. Das aufgezeichnete Macro wird in der Datei “#current.iim” abgelegt.
Mit Hilfe des Button “Save Macro As…” wird das aufgenommene Macro als Datei abgespeichert.
Abspielen von Macros

Macro abspielen mit iMacros
Wählen ein abgespeichertes Macro aus der Liste aus. Durch klicken auf den “Play” Button wird das Macro abgespielt. Die Ausführung des Macros kann im Browserfenster beobachtet werden. Mit dem Button “Pause” kann das Macro vorübergehend angehalten werden. Durch klicken auf den “Stop” Button wird das Macro sofort gestoppt.
Das Macro kann auch mehrfach hintereinander ausgeführt werden. In der unteren Hälfte des Fensters gibt es das Feld “Max:”. Dort kann die die Anzahl an Wiederholungen eingetragen werden. Mit dem Button “Play (Loop)” wird die mehrfache Ausführung des Macros gestartet.
Beispiel1: Periodische Ermittlung des Benzinpreis
Nach dieser einfachen Einführung für iMacros zeige ich Ihnen ein Beispiel. Mit Hilfe von iMacros erstelle ich eine Statistik mit dem täglichen Benzinpreis einer Tankstelle.
Die Daten erhalte ich durch die Webseite Clever Tanken. Als erster Schritt werden die Daten der Webseite extrahiert. Mit Hilfe des aufgenommenen und bearbeiteten iMacros werden die Daten geholt und in einer Datei abgelegt.
VERSION BUILD=7311339
‘ (c) 2011 Karl Högerl
TAB CLOSEALLOTHERS
SET !EXTRACT_TEST_POPUP NO
URL GOTO=http://www.clever-tanken.de/index.asp
TAG POS=1 TYPE=SELECT FORM=ID:form1 ATTR=NAME:typ CONTENT=%SuperPlus
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:form1 ATTR=NAME:ort CONTENT=93073
TAG POS=2 TYPE=INPUT:IMAGE FORM=ID:form1 ATTR=ID:image1
TAG POS=1 TYPE=A ATTR=TXT:Freie<SP>Tanke<SP>LanzingerDonaustaufer<SP>Str.<SP>11293059<SP>Regensburg EXTRACT=TXT
TAG POS=1 TYPE=FONT ATTR=CLASS:detailhead EXTRACT=TXT
TAG POS=3 TYPE=FONT ATTR=CLASS:partnerhead EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extract_{{!NOW:ddmmyy_hhnnss}}.csv
Mit Hilfe der “Geplanten Tasks” aus der Systemsteuerung werde ich täglich das iMacros Skript aufrufen.

Systemsteuerung: Geplante Tasks für iMacros Benzinpreis Statistik
Die Daten werden täglich in einer Datei abgelegt. Mit Hilfe der zusammengefassten Daten kann dann die Benzinpreisentwicklung verfolgt werden.

Benzinpreis Statistik
Das einfache Beispiel zeigt, wie sich durch Information Kosten einsparen lassen.
Beispiel2: Automatisierte Eingabe von Daten in ein Webformular
Für Tests müssen Testsysteme mit Daten gefüllt werden. Dies sollte durch eine Eingabe auf der Webmaske geschehen um eine realistische Eingabe zu simulieren. Dazu erstelle ich eine csv-Datei (Comma-Separated-File) mit den Daten die iMacros eingeben soll.

Testformular für iMacros Scripting Edition
Für die Eingabe habe ich ein Macro aufgenommen. Das Macro benutzt die gewünschten Felder.
VERSION BUILD=7311339
‘ (c) 2011 Karl Högerl
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=http://www.url-eintragen.de
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:thema CONTENT=Linux
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:name CONTENT=Max
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:vorname CONTENT=Mustermann
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:strasse CONTENT=Züricher<SP>Str.<SP>1
TAG POS=1 TYPE=INPUT:RESET FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=VALUE:Eingaben<SP>löschen
In einem weiteren Schritt erstelle ich eine csv Datei “testformular.csv” mit den zu testenden Daten.
“thema” , “name” , “vorname” , “strasse”
“Linux”, “Mustermann”, “Max” , “Züricher Str. 1″
“Windows”, “Mueller”, “Hans” , “Berner Str. 12″
“OSX”, “Meier”, “Hermine” , “Baldurweg 8″
Danach bereite ich das geänderte Script für den Test vor und speichere es unter dem Dateinamen “testformular.iim“.
VERSION BUILD=7311339
‘ (c) 2011 Karl Högerl
TAB T=1
TAB CLOSEALLOTHERS
SET !LOOP 2 ‘ Beginnt mit der 2. Zeile der csv Datei
SET !DATASOURCE testformular.csv ’ Ruft die csv Datei auf
SET !DATASOURCE_LINE {{!LOOP}} ’ Lädt die Daten pro Zeile
URL GOTO=http://www.url-eintragen.de
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:thema CONTENT={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:name CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:vorname CONTENT={{!COL3}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=NAME:strasse CONTENT={{!COL4}}
WAIT SECONDS=2
TAG POS=1 TYPE=INPUT:RESET FORM=ACTION:/cgi-bin/mailmanager.pl ATTR=VALUE:Eingaben<SP>löschen
Um den Test auszuführen trage ich nun in das Feld “Max:” auf der unteren Hälfte des Bedienpanels im Tab “Play” die Anzahl der Zeilen der csv Datei ein. Danach klicke ich auf den Button “Play (Loop)”. iMacros füllt das Formular mit den Daten der csv Datei aus. Bei Bedarf kann noch das Handling beim Auftreten von Fehlern festgelegt werden.
Zur Fehleranalyse nutze ich meist die automatische Screenshot Funktion von iMacros und zeichne die Webseite damit auf. Damit kann ich später in einem Zug die aufgetretenen Fehler analysieren.
Beispiel3: Automatisiertes Ermitteln von KFZ Angeboten
Eine weitere Möglichkeit ist beispielsweise ist das wiederholte Zusammenstellen von KFZ Angeboten nach ausgewählten Kriterien. Die spart Zeit, da die Webseiten nicht manuell zusammengeklickt werden. Zudem sind die Fahrzeuge in der Liste leichter vergleichbar.
Dazu habe ich das Macro auto-mobile.iim aufgezeichnet, dass die Daten der ausgewählten Fahrzeuge ermittelt.
VERSION BUILD=7361445
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=http://www.autoscout24.de/
TAG POS=1 TYPE=A FORM=ID:aspnetForm ATTR=CLASS:extendedLink
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:make1 CONTENT=%13
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:model1 CONTENT=%0
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:model1 CONTENT=%-38
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:bodyType CONTENT=%0
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:bodyType CONTENT=%5
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:mileageto CONTENT=%0
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:mileageto CONTENT=%60000
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:priceto CONTENT=%0
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:priceto CONTENT=%20000
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:pricefrom CONTENT=%1000
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:pricefrom CONTENT=%15000
TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:mileageto CONTENT=%30000
TAG POS=1 TYPE=SPAN FORM=ID:aspnetForm ATTR=CLASS:m
‘New page loaded
Zudem habe ich ein weiteres iMacro Skript auto-mobile-extract.iim erstellt. Dieses Skript extrahiert die Daten aus der Webseite.
VERSION BUILD=7361445
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=http://www.autoscout24.de/ListGN.aspx?atype=C&mmvmk0=13&mmvmd0=-38&mmvco=1&make=13&model=-38&pricefrom=15000&priceto=20000&kmto=30000&body=5&cy=D&zipc=D&ustate=N%2CU
TAG POS={{myvar}} TYPE=DIV FORM=ID:aspnetForm ATTR=CLASS:lit-price<SP>font-item-price EXTRACT=TXT
TAG POS={{myvar}} TYPE=DIV FORM=ID:aspnetForm ATTR=CLASS:lit-km EXTRACT=TXT
TAG POS={{myvar}} TYPE=DIV FORM=ID:aspnetForm ATTR=CLASS:lit-y EXTRACT=TXT
TAG POS={{myvar}} TYPE=DIV FORM=ID:aspnetForm ATTR=CLASS:lit-cont EXTRACT=TXT
Das dritte Script ist ein Visual Basic Script. Es erstellt die Datei mit den extrahierten Daten und steuert die beiden oben genannten Scripte.
‘ Erstellt von Karl Hoegerl
‘ Basiert auf dem iMacros Beispiel
‘ iMacros Extract-2-File Script
‘ (c) 2008-2010 iOpus Software
Option Explicit
Dim objFileSystem, objOutputFile
Dim strOutputFile
Const OPEN_FILE_FOR_APPENDING = 8
Dim message
message = “Dieses Skript zeigt wie die gewünschten Autos ausgewählt und in eine CSV Datei exportiert werden.”
MsgBox (message)
‘ finde den aktuellen Ordner
Dim myname, mypath
myname = WScript.ScriptFullName
mypath = Left(myname, InstrRev(myname, “\”))
‘ basierend auf den Scriptnamen wird der Dateinamen erstellt
strOutputFile = “./extracted-data.txt”
Set objFileSystem = CreateObject(“Scripting.fileSystemObject”)
Set objOutputFile = objFileSystem.CreateTextFile(strOutputFile, TRUE)
‘Notiz: Benutze ….CreateTextFile(strOutputFile, FALSE) um die Daten in der Datei anzufügen
Dim iim1, iret, iplay
set iim1= CreateObject (“imacros”)
iret = iim1.iimInit(“-v7″)
iplay = iim1.iimPlay(mypath & “.\auto-mobile.iim”)
Dim num, pos, str, s
For num = 1 To 4
str = cstr(num) ‘Konvertiere integer zu string
iret = iim1.iimDisplay(“Listing No: ” + str)
pos = num ‘+ 4′start at 5: Offset für POS= statement
str = cstr(pos) ‘Konvertiere integer zu string
iret = iim1.iimSet(“myvar”, str) ‘Selektiere einen neuen Link für jeden neuen Lauf
iplay = iim1.iimPlay(mypath & “.\auto-mobile-extract.iim”)
If iplay = 1 Then
s = “”"” + iim1.iimGetLastExtract(1)+ “”",”"” + iim1.iimGetLastExtract(2) + “”",”"” + iim1.iimGetLastExtract(3) + “”",”"” + iim1.iimGetLastExtract(4) + “”"”
objOutputFile.WriteLine(s)
End If
If iplay < 0 Then
MsgBox “Error code: “+cstr(iplay) + VbCrLf + “Error Text: ” + iim1.iimGetLastError()
End If
Next
iret = iim1.iimExit
objOutputFile.Close
Set objFileSystem = Nothing
MsgBox “Die Daten sind in der Datei <extracted-data.txt> gespeichert. Das Skript ist beendet.”
WScript.Quit(iret)
Als Ergebnis entstand eine kommaseparierte Textdatei mit den extrahierten Daten:
“€ 15.900,- “,”22.000 km”,”12/2006″,”BMW 318 i Touring D-42329 Wuppertal – Benzin, Kombi/Van, Schaltgetriebe,
grau metallic, HU/AU 05/2011, ABS, Airbag, Anhängerkupplung, Beifahrer Airbag, Bordcomputer … mehr”
“€ 16.000,- “,”26.000 km”,”01/2006″,”BMW 320 i Touring D-29525 Uelzen – Benzin, Kombi/Van, Schaltgetriebe,
titansilber metallic, 1 Vorbesitzer, HU/AU 01/2013, ABS, Airbag, Beifahrer Airbag, Bordcomputer, Dachträger, Elektr. … mehr”
“€ 16.400,-*”,”23.075 km”,”12/2006″,”BMW 318 i Touring, Klima, PDC, Sitzheizung, nur 23000 kD-08525 Plauen / Vogtl. – Benzin, Kombi/Van, Schaltgetriebe, montegoblau metallic, Euro 4, 2 Vorbesitzer, ABS, Airbag, Beifahrer Airbag, Bordcomputer, Elektr. … mehr”
“€ 16.500,- “,”21.000 km”,”09/2007″,”BMW 318 i Tour., PDC, Klimaaut., SitzheizungD-73037 Göppingen – Benzin, Kombi/Van, Schaltgetriebe,
titansilber metallic, 2 Vorbesitzer, HU/AU 09/2012, ABS, Airbag, Beifahrer Airbag, Bordcomputer, Elektr. … mehr”
Viele weitere Beispiele finden Sie im Wiki von iOpus.
Fazit:
iMacros ist ein leistungsfähiges Automatisierungs Werkzeug für das Internet von der Firma iOpus. Im professionellen Bereich zeigt die Scripting Edition von iMacros vielfältige Einsatzmöglichkeiten. Durch das Scripting Interface kann die iMacros Funktionalität in eigenen Programmen integriert werden. Die große Auswahl an Programmiersprachen (Windows Scripting Host, Visual Basic 6, Visual Basic .NET, Visual Basic Scripting, C#, Java, Perl, Python, C++, ASP, PHP, ASP.NET, Powershell) und die umfangreiche Dokumentation bieten einen guten Einstieg zur Nutzung von iMacros.