Project by FirePanther
1c6bdde2e1dc69a5ffb9533dea92be7f

Nicht angemeldet.

Das Tutorial wurde noch nicht zuvor von Ihnen gelesen.

Tutorials

Hier finden Sie Tutorials von und für Euch

Tutorialinformationen
2553 Zugriffe / 0 Kommentare

FF.au3 ? AutoIt-Funktionen im Browser

Kurzbeschreibung
Gundlagen zur Programmierung mit der FF.au3.
Hier mein zweites Tutorial, da so viel Nachfrage nach Arbeiten in Browsern besteht und ich mich selbst gerade darin eingearbeitet habe.
Also werde ich auch nachträglich noch das ein oder andere ergänzen!

1. Was ist FF.au3? und wo kommt es her?


Die FF.au3 ist eine UDF (User Defined Function) von u.a. Thorsten Willert, auf dessen Website wir auch auch Dokumentation, die UDF und Beispiele auf DEUTSCH finden können.
http://thorsten-willert.de/

Dank dieser "Funktions-Sammlung" können wir mittels FireFox Daten in Formulare eingeben, Links verfolgen, Seiten aufrufen, Seiten auslesen und Daten extrahieren und vieles mehr.

In diesem Zusammenhang habt ihr sicher auch schon von der IE.au3 gehört... Hören und vergessen, die FF.au3 ist funktioneller, einfacher und schneller!


2. Meine Vorbereitung, bevor ich überhaupt anfangen kann


Als erstes braucht ihr natürlich eine aktuelle Version der FF.au3, die ihr hier bekommt:
http://thorsten-willert.de/Themen/FFau3/FF.au3/files

Dann müsst ihr natürlich noch FireFox haben (*lach*) und das AddOn MozRepl, ohne das der Bot nicht funktionieren kann. Das AddOn bekommt ihr hier:
http://wiki.github.com/bard/mozrepl
Wie ihr das handhaben könnt, dass auch z.B. BotUser das nutzen können, wenn ihr mit der FF.au3 einen Bot publiziert, dazu komme ich später.

Wenn ihr auch AutoIt & Co habt, steht uns nichts weiter im Wege!

Eine Anmerkung noch: Solltet ihr Befehle suchen, findet ihr hier einen Überblick, erläutert in DEUTSCH:
http://german.documentation.ff-au3.thorsten-willert.de/
Ein paar (kompliziert zu überblickende) Beispiele findet ihr hier:
http://thorsten-willert.de/Themen/FFau3/Beispiele/files


3. Grundfunktionalität und erste Schritte


Zu Beginn ist es natürlich ratsam, gleich was ihr machen wollt, FireFox zu starten:

AutoIt-Quelltext

_FFStart([$sURL = "about:blank"[, $sProfile = "default"[, $iMode = 1[, $bHide = False]]]])


Mit der parameterlosen Funktion startet ihr einfach nur ein FireFox-Fenster, gebt ihr eine Adresse als 1. Parameter ein, startet er diese, der nächste Parameter wählt das FF-Profil(braucht ihr erstmal nicht^^), der folgende ist wieder wichtiger, er bestimmt, ob das Fenster unsichtbar gestartet wird oder sichtbar.
* $bHide: True = unsichtbar; False = sichtbar
* $iMode: 0 = Wird in bereits geöffnetes FF-Fenster geladen; 1 = Neues FF-Fenster; 2 = Wenn Fenster vorhanden, lädt er es dort hinen, sonst macht er ein neues auf

Ihr seht also, wir können mit diesem Befehl auch weiterhin navigieren! Allerdings ist das umständlich und wenn das Fenster unsichtbar ist, kann das zu Schwierigkeiten führen. Also nutzen wir einen anderen Befehl:

AutoIt-Quelltext

_FFOpenURL($sURL)


Damit können wir ganz einfach eine neue URL in den Browser laden. Der Parameter bedarf wohl keiner weiteren Worte.

Was man auf macht, sollte man auch wieder schließen! Besonders, wenn ihr mit einem unsichtbaren Browser arbeitet ist dieses wichtig!

AutoIt-Quelltext

_FFQuit()

?_FFWindowClose()? schließt nur ein Fenster, nicht ganz FireFox, was sicher auch sehr praktabel ist.
Es ist auch wichtig, dass ihr den Include nicht vergesst. Vergesst nicht, dass ihr auch hier das Fenster wieder mit ?WinSetState()? sichtbar machen könnt!

Es ist also Zeit für ein erstes Beispiel!

AutoIt-Quelltext




4. Erstellen einer LogIn-Funktion


Das war doch schon einmal ein kleiner Erfolg!
Doch darauf können wir uns ja nicht ausruhen... Wenn wir nur Seiten ansteuern, bringt uns das nicht sehr viel.
Wer zu ?bequem? ist, sich eine eigene LogIn-Funktion zu schreiben, für den hat Thorsten eine sehr gute und eig. immer funktionierende Alternative geschrieben:
http://www.thorsten-willert.de/Themen/FF…AutoLogin.au3?a

Das Wichtigste bezüglich Interaktion ist wohl das Klicken auf einen Link.

AutoIt-Quelltext

_FFLinkClick($vSearch[, $sMode = "href"])

Der erste Parameter gibt den Suchbegriff (oder deinen Teil dessen!) bzw. den Index des Links, der zweite Parameter die ?Art? des Suchbegriffes.
Wir können nach sechs Arten suchen: ?href?; ?text?; ?name?; ?title?; ?id?; ?index?
Jeder Link hat eine gewisse ?Beschreibung? im Quelltext, sollte das nicht so sein, können wir ihn zumindest durch den Index aktivieren!

Wichtig ist auch, dass wir Formulare ausfüllen können, wie sonst sollen wir uns denn irgendwo einloggen?

AutoIt-Quelltext

_FFSetValue($sValue, $sElement[, $sMode = "elements"[, $iIndex = 0]])

Der erste Parameter gibt den Inhalt an, den wir eintragen wollen, also z.B. den Usernamen. Der zweite Parameter, das des Elements, also z.B. den Namen InputBox, während der dritte Parameter angibt, wie wir das Element beschreiben, durch Namen, Klasse, Tag oder ID. Der vierte und proportionale Parameter sagt uns, das wievielte Element genommen werden soll, wenn unsere Beschreibung mehrmals passt.
Mit dieser Funktion ist es ausserdem möglich, direkt Elemente zu benutzen, die wir mit _FFObj und _FFXPath(wird später drauf noch eingegangen) bestimmen, zu nutzen!

Nun müssen wir das Ganze natürlich auch noch abschicken!

AutoIt-Quelltext

_FFFormSubmit([$vForm = 0[, $sMode = "index"[, $sSubmitMode = "submit"]]])

Der erste Parameter gibt den Namen oder die ID des Formulars an, dass wir abschicken wollen (kann man oft vernachlässigen!), der zweite Parameter gibt an, ob wir beim ersten Parameter einen ?index?, einen ?name?n oder eine ?id? eingegeben haben.
Der dreitte Parameter ist sehr wichtig, da einige Webseiten es uns durch Tricks schwerer machen. Dort geben wir an, wie das Formular bestätigt werden soll. Durch ?submit?, ?click?, ?enter?(Taste gedrückt halten), ?enter2?(Taste betätigen), ?auto?.

Nun beglücke ich euch wieder mit einem Beispiel, spielt ruhig ein bisschen mit den Parametern rum!

AutoIt-Quelltext




5. Weitere wichtige Funktionen und deren Anwendung


Es gibt natürlich nicht nur Links, sondern auch Bilder, die als Hyperlink agieren. Auch die wollen angeklickt werden. Im Prinzip ist der Befehl der normalen Link-Klick-Funktion sehr ähnlich, darum fasse ich mich kurz in der Erläuterung.

AutoIt-Quelltext

_FFImageClick($vSearch[, $sMode = "src"])

Der erste Parameter ist wieder der ?Suchbegriff?, der zweite beschreibt die Art. Dieser kann ?src?(Link-Text des Bildes), ?alt?(Alternativ-Text des Bildes), ?name?, ?title?, ?id?, ?href? oder ?index? sein.

Normaler Weise warten alle Befehle, bis die Seite geladen ist, sollte dies aber mal nicht der Fall sein, gibt es noch einen Befehl, der die Seite sich zu Ende laden bzw. eine bestimme Zeit warten, lässt.

AutoIt-Quelltext

_FFLoadWait([$iTimeOut = $_FF_LOADWAIT_TIMEOUT])

Dieser Befehl lässt parameterlos die Seite zu Ende laden. Mit dem optionalen Parameter kann man bestimmen, wie lange er warten soll, falls man doch nicht komplett bis zum Aufbau von z.B. jedem einzelnen Bild warten möchte, sondern nur, bis ein bestimmter Bereich vorhanden sein sollte.

Dann könnt ihr mit der FF.au3, was die IE.au3 nicht beherrscht, sogar einzelne Tabs ansteuern! Doch Vorsicht, wenn ihr mit einem unsichtbaren Fenster arbeitet, es wird wieder selektiert! Ihr müsst es dann direkt wieder verstecken oder euch etwas anderes einfallen lassen.

AutoIt-Quelltext

_FFTabAdd([$sURL = "about:blank"[, $bSelect = True]])

Der erste Parameter gibt an, welche Seite ihr in den Tab laden wollt und der zweite, ob er direkt geöffnet werden soll, oder erst einmal ein inaktiver Tab bleibt.
Parameterlos öffnet sich einfach ein leerer Tab mit einer blanken Seite!

Um die einzelnen Tabs ansteuern zu können, braucht ihr folgenden Befehl:

AutoIt-Quelltext

_FFTabSetSelected([$vTab = 0[, $sMode = "index"]])

So könnt ihr einen bestimmen Tab auswählen. Der erste Parameter kann das ?Label?(z.B. Startseite) oder den ?Index? beinhalten, was dann im 2 Parameter auch stehen muss. Weiterhin kann der erste Parameter auch die Werte ?prev? (vorheriger Tab), ?next? (nächster Tab), ?first?(erster Tab) oder ?last? (letzter Tab) annehmen.

Zu guter Letzt wollen wir die Tabs auch wieder schließen.

AutoIt-Quelltext

_FFTabClose([$vTab = -1[, $sMode = "index"]])

Ohne Parameter wird der aktuelle Tab geschlossen. Im ersten Parameter kann wieder das ?Label? oder der ?Index? eingetragen werden, was auch wieder dann im zweiten Parameter stehen muss. Sonst kann der erste Parameter auch ?all?, ?selected?, ?prev?, ?next?, ?first? oder ?last? sein (ihr solltet nun wissen, was was bedeutet!).

Und wieder ein kleines Beispiel für euch:

AutoIt-Quelltext



Nun denkt ihr euch sicher ?Oh mein Gott, ist der bald fertig? Was muss ich noch alles wissen??...
Aber keine Angst, soviel kommt nicht mehr an Befehlen. Ich kann euch ja auch nicht alles vorkauen!
Jetzt kommt aber eine ganz elementare Sache und ihr solltet gut aufpassen.

Ihr wollt und müsst, wenn ihr Automatisierungen programmiert, sehr schnell in den QuellCode rein, das haben wir ja schon gemacht, aber manchmal müsst ihr diesen auch auslesen!
Und genau DAS werde ich euch jetzt zeigen und vielleicht verrate ich euch noch ein bis zwei kleine Tricks*zwinker*.

AutoIt-Quelltext

_FFReadHTML([$sMode = "body"[, $iFilter = 0]])

Oh, dieser Code ist so abartig wichtig und hat auch seine Tücken...
Der erste Parameter kann den Wert ?body? oder ?html? annehmen. Also gibt den Wert zwischen jeweils diesen Tags im Code aus. Jeder mit Grundkenntnissen HTML kennt den Unterschied. Der Rest muss hier sowiso die Finger von lassen.
Mit dem zweiten Parameter kann man einen Filter (auch mehrere möglich/addierbar!) aktivieren. ?0? (deaktiviert), ?1? (Non ASCII), ?2? (Double Whitespaces), ?4? (Double Linefeeds), ?8? (HTML Tags) und ?16? (Einfache HTML Tags / Entities Konvertor).

Was passiert also, wenn ich diesem Befehl einer Variable zuordne? Er nimmt den Wert eines langen Strings an (wenn FireFox offen ist).
In diesem String stehen Haufenweise Informationen über den Mainframe und ihr könnt durch die ?String?-Befehle eig. alles isolieren, was ihr wollt. Dazu wird es gleich auch ein Beispiel geben. Ich möchte aber noch anmerken, dass Deathly Assassin hier: AMrK's & Deathly Assassin's UDFs
eine sehr gute ?Between?-Funktion geschrieben hat, die euch weiterhelfen kann, wenn ihr mit ?_StringBetween()? nicht mehr weiter kommt(zwischen Variabeln suchen wollt, Anführungstriche habt, etc...!)

Wichtig auch: ?_StringBetween()? hat ein ARRAY als Ergebnis. Das bedeutet, wenn nichts gefunden wird und ihr mit etwas arbeiten wollt, das ?da sein sollte?, aber z.B. FireFox nicht offen ist, wird das Script sich beenden...!

Einschub vor dem Beispiel:

So wählt ihr einen anderen Frame:

AutoIt-Quelltext

_FFFrameEnter($vFrame[, $sMode = "index"])

Im ersten Parameter gebt ihr den ?Index?, den ?Name?n oder die ?Id? ein und im zweiten Parameter setzt ihr dann diese ?Art?.

Und schon ist es wieder Zeit für ein Beispiel!

AutoIt-Quelltext



Wie ihr seht, umgehe ich geschickt die Anführungszeichen, in dem ich den String manipuliere...
So könnt ihr auch Linkadressen ermitteln, die jedes Mal ein anderes Ende haben (Kampf-IDs in Spielen!)!
Ihr lest den Teil aus, der immer anders ist und setzt dann vor den String den Teil, der immer bleibt. Als Suchraster hat man dann ja die statischen Teile...


6. Muss ich das mit MozRepl jedem erklären, der meine Bots nutzen will?



Nein :D...! Denn Thorsten Willert und Thunder-man (Frank Michalski) haben da vorgesorgt und eine UDF kreiert, die überprüft, ob MozRepl bereits installiert ist. Wenn dies nicht der Fall ist, wird das direkt nachgeholt.
Ich habe es leider noch nicht testen können, es soll aber funktionieren.
Hier die UDF:

AutoIt-Quelltext




Wie man hoffentlich sieht, ist das Script sehr einfach aufgebaut und man muss nur ?_MozRepl_Detect()? irgendwo in sein Script packen, wo es einmal am Anfang ausgeführt wird. Oder eine Funktion, die Ressourcensparend in der Gui verbaut ist :).
Speichert die UDF ab, included sie und los geht?s!


7. Wie bekomme ich die UserCall-Hilfe in Scite für die _FF-Funktionen?



Ihr bekommt die aktuelle Version immer hier: http://thorsten-willert.de/Themen/FFau3/Verschiedenes/files
Die deutsche/englische Datei einfach öffnen oder runterladen und den Inhalt in diese hier einfügen/überschreiben:
"*:\Program Files\AutoIt3\SciTE\api\au3.user.calltips"

Jeden Freitag werden Änderungen hier auch geupdated!


8. Gibt es eine einfachere Methode, Strings auszulesen?



Aber natürlich gibt es die. Mit der Funktion "_FFXPath" in Verbindung mit dem Tool XPather ist es ein leichtes, an Werte zu kommen!
Hier gibt es das AddOn zum Downloaden: https://addons.mozilla.org/de/firefox/addon/1192
Es ist natürlich ein AddOn für Firefox.

AutoIt-Quelltext

_FFXPath($sQuery[, $sAttribute = "textContent"[, $iReturnType = 2[, $iFilter = 0]]])

Tja, das haben wir also nun, doch wie kann man das nutzen?...
Ich erläutere mal die Parameter:

Der erste Parameter ist das "Suchwort"... Der zweite Parameter ist eine Einschränkung dieses, er beschreibt den "Textinhalt". Er kann z.B. auch "src" annehmen, wenn man den "Text" des "src" eines Bildes haben möchte.
Hierzu sei gesagt, dass _FFXPath nach Objekten sucht, bzw. Tags, die das umgeben, was wir suchen...
Dann gibt die Funktion das umschlossene Wort aus, bzw. zählt Funktionen, etc...

Der dritte Parameter, der die Art beschreibt, in der das Ergebnis geliefert wird:

Spoiler

/0\ Unwichtig, was das Ergebnis ist, es wird ausgegeben. Wenn das Ergebnis ein Array ist, wirkt die ?0? wie die ?6?.
/1\ Das Ergebnis ist eine Zahl (z.B. wichtig für die count()-Funktion).
/2\ Das Ergebnis ist ein einzelner String.
/3\ Gibt einen Wahrheitswert(bool'schen Wert) aus, was nützlich ist, wenn ihr die XPath-Funktion ?not()? nehmt.
/6\ Das Ergebnis ist ein Array, der alle Ausdrücke beinhaltet, die dem Suchstring momentan zuordbar sind. Das Array muss nicht unbedingt richtig in sich geordnet sein.
/7\ Das Ergebnis ist ein Array, der alle Ausdrücke beinhaltet, die dem Suchstring momentan zuordbar sind. Das Array ist richtig geordnet.
/8\ Das Ergebnis ist ein Array, dass einen beliebig zum Suchbegriff passenden String beinhaltet, der nicht unbedingt dem ersten findbaren entspricht.
/9\ Das Ergebnis ist ein Array, dass den ersten zum Suchbegriff passenden String beinhaltet.
/10\ Das Ergebnis ist die Zahl der Übereinstimmungen(COUNT).
/11\ Schränkt die Suche ein, das Ergebnis muss min. einen Teil des 2. Parameters beinhalten.
/12\ Schränkt die Suche ein, das Ergebnis muss mit dem 2. Parameter beginnen.
/13\ Schränkt die Suche ein, das Ergebnis ist der 2. Parameter.
/14\ Schränkt die Suche ein, das Ergebnis ist der 2. Parameter.


Und schlußendlich der vierte Parameter, der Filter:
/1\ ?Nicht-ASCII? / filtert Sonderzeichen und ä,ö,ü, etc
/2\ Double Whitespaces (Abstände)
/4\ Double Linefeeds(Zeilenvorschübe)
/8\ HTML-Tags
/16\ Einfacher HTML-Tag / Entities Konvertor

Das AddOn habe ich nun nicht so zerplückt, da es selbsterklärend ist...
Im Prinzip ist die Benutzung dieses Tools nicht sehr schwer... Xpather ist im ?Rechtsklick-Menü? eingebaut, nach der Installation und wenn man ein Wort, Bereich oder Feld mit einem Rechsklick anwählt, bekommt man direkt das ganze Suchschema, das man benötigt... Und zwar einen Wert, der MEHR als eindeutig beschrieben ist.

Natürlich bekommt ihr noch eines eurer geliebten Beispiele:

Spoiler

AutoIt-Quelltext



Dazu noch eine Kleinigkeit ->

Quellcode

; Das ist nur eine Übersetzung, das Beispiel ist von Thorsten Willert!
 
#Include <Array.au3> ; benötigt für das Arbeiten mit Arrays
#Include <FF.au3> ; Kennt ihr mittlerweile ;)?
 
If _FFConnect() Then ; Wenn man mit FireFox verbunden ist,...
_FFTabAdd( "http://ff-au3-example.thorsten-willert.de/") ; ... erstellt er einen neuen Tab
 
MsgBox(64, "Anzahl der Passwortfelder:", _FFXPath( "//input[@type='password']", "", 10)) ; Sucht nach "input"-Feldern des Typus "password" und "zählt" diese
 
MsgBox(64, "Fieldset-Legend:", _FFXPath( "//form[1]/fieldset/legend")) ; Sucht nach dem 1. Form, hinter dem "fieldset" beginng und gibt dann den Wert zwischen den "legend"-Tags aus
 
MsgBox(64, "Text from 0ption 5:", _FFXPath( "//option[2]")) ; Die 2. Option wird ausgegeben, bzw. der Wert, der zwischen den 2. "option"-Tags steht
 
$vTmp = "Method: " & _FFXPath( "//form[1]/@method") & @crlf ; Gibt den "Value" des Parameters "method" aus
$vTmp &= "Action: " & _FFXPath( "//form[1]/@action") ; Gibt den "Wert" des parameters "action" an
MsgBox(64, "Form 2", $vTmp) ; ...
 
$aArray = _FFXPath("//option","value",7) ; Gibt die richtig geordneten Werte aus, die von "option"-Tags umgeben sind (und als "0. Array" die Anzahl der Ergebnisse)
_ArrayDisplay($aArray) ; Zeigt das Array in einer Liste
 
_FFXPath("//form[1]//input[@type='checkbox' and position()=2]","",9) ; Sucht die 1. Form, darin einen input (-Trennung-) vom Typus "checkbox" UND(!) geht zur 2. Position, auf die das zutrifft, um das auszugeben, was von den checkbox-Tags umgeben ist
MsgBox(64,"", _FFObj("xpath.type") & @crlf & _FFObj("xpath.value")) ; Gibt die ART des Objektes aus und den Wert
_FFObj("xpath.checked=true") ; Setzt ein Häkchen in diese Checkbox! Anmerkung: In weiteren FF-Funktionen wird immer vom letzten Wert ausgegangen, den man mit FFXPath ermittelt hat, eine extra Variable braucht man nicht immer!
 
EndIf
 
 
; Eigenes Beispiel
 
#Include <Array.au3> ; s.o.
#Include <FF.au3> ; *zwinker*
 
_FFStart("www.web.de") ; Nicht mehr neu für euch!
 
MSGBox(64, "Soviele Input-Felder hat www.web.de!", _FFXPath("//input", "", 10)) ; Zählt die Inputfelder, die www.web.de gerade im Quellcode hat
MSGBox(64, "Das ist die Beschriftung des Jobs-Link von www.web.de!", _FFXPath("//html[@id='buster']/body/div[@id='container']/div[@id='footer']/ul/li[@id='footerJobs']/a/span"))


Möchte ich die "src" auslesen ->

AutoIt-Quelltext

$src = _FFXpath("//th[contains(.,'Schau hier')]//img/@src")


Thorsten wollte noch, dass ich folgendes ergänze:
Mit _FFXPath lassen sich nicht nur die Werte auslesen sondern auch setzen.
Zudem gibt die Funktion bei einem Aufruf wie

AutoIt-Quelltext

_FFXpath/("//a[1]","",9)

ein "Objekt" zurück das mit Befehlen wie _FFClick, _FFSetValue usw. weiterverwendet werden kann.
Diese "Objekt" ist in Wirklichkeit ein String der von den Funktionen entsprechend ausgewertet wird.

Hier noch ein kleines "Interview mit Thorsten Willert":

Ich: Was ist vorteilhafter/schneller? XPather-Suchvorschlag nehmen oder den selber so "erarbeiten"?
XPather sucht im Prinzip das gleiche, nur, dass er ja den Befehl wesentlich mehr einschränkt, also mit //html/... anfängt... Was sehr lang wird...

So kurz gehalten bin ich gefeiter vor Veränderungen, richtig? :D Aber angeblich soll XPather so gut mit dieser Funktion kombinierbar sein :D. Was hat das dann für Vorteile?!

T.W.: Stimmt das ist "etwas" umfangreicher. Xpath ist schließlich eine komplette Sprache zum Abfragen von XML-Strukturen.

Am besten mal die Links in der Dokumentation "überfliegen" oder die hier ansehen:
http://www.w3.org/TR/xpath (angeblich soll FF zwar Xpath 2.0 eingebaut haben - funktioniert aber anscheinend nicht ... )
http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm
http://www.zvon.org/xxl/XPathTutorial/Ou?r/examples.html (Anm. von mir(Acanis): UNBEDINGT REINSCHAUEN!)

Der Xpather-Vorschlag ist eine gute Grundlage, wenn man sehr komplizierte Strukturen hat, also z.B. sehr verschachtelte DIVs die nur Aufgrund von Texten, Klassen oder Ähnlichem zu unterscheiden sind.
Wenn man allerdings den kompletten xpath übernimmt läuft man Gefahr, das bei der kleinsten Änderung auf dieser Seite die Abfrage nicht mehr funktionert. Darum würde ich den Vorschlag von XPather als Grundlage nehmen und solange kürzen, bis kein eindeutiges Ergebnis mehr erscheint - die Ausdrücke lassen sich in XPather direkt testen.
Normalerweise sind die Strukturen einer Seite meist so einfach, daß man XPather eh nur noch zum "Testen" braucht.

Auch würde ich die Abfragen von hinten her "aufzäumen".
Wenn z.B. ein img die id=*bild0815" hat, dann brauch ich nicht mehr als //img[@id='0815'] - da eine ID (normalerweise) eindeutig ist, braucht es keine weiteren Angaben.
Oder ich habe nur eine Tabelle auf der Seite, bei der ich aus der zweiten Reihe die zweite Spalte den Text haben möchte:
//tr[2]//td[2]
mehr braucht es dann da nicht.

Ich: Ist die Funktion schneller als FF_HTMLRead()?

T.W.: Ganz klar ja.
HTMLRead ist eigentlich ein Relikt aus den allerersten Versionen, wo ich noch eine Ähnlichkeit der Funktionen zur IE.au3 beibehalten wollte - mittlerweile ziemlich überflüssig ...

* Erstens ist der Befehl relativ laaaangsam - da nimmt man leichter gleich INetGetSource oder ähnliches.
* Änderungen per AJAX bekommt man gar nicht erst mit, wenn man den Quellcode ausliest - per Xpath hingegen ist das jederzeit möglich
* Es ist per xpath viel eleganter und sicherer Abzufragen, als den Quellcode mit den String-Funktionen zu zerlegen.
* Bei den Rückgaben die per Array erfolgen, spart man sich zig Schleifen in AutoIt.
* Viele Funktionen (rechnen usw.) kann man auch gleich per XPath erledigen, da erspart man sich es viele Werte abzufragen und diese dann weiter zu verarbeiten
* und da man auch Werte setzen kann und nicht nur welche Abfragen, wäre ein "ankreuzen" sämtlicher Checkboxen mit XPath einfach:

AutoIt-Quelltext

_FFXpath("//input[@type='checkbox']", "checked=true", 6)


schneller gehts ja wohl nicht mehr ...
* ... :D


-----------------------------------------------------------------------------------------

Ich hoffe sehr, es gefällt euch und dass ihr dem Thema nun etwas verwandter seid. Gerne nehme ich Kritik, als auch Lob, an.


LG Acanis

*edit* 9. Januar '10 -> Komplett an die neuen Funktionen angepasst und nach der Kritik von Thorsten Willert einige Änderungen vorgenommen!
Kommentare Es sind zur Zeit noch keine Kommentare vorhanden...