Eine Automatisierungs-Wrapper-Klasse um das InternetExplorer-Objekt, die die Steuerung mit VBScript erleichtert.
EINRICHTUNG | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
Fügen wir zunächst die Klasse zu unserer eigenen VBScript-Datei hinzu.
With CreateObject( "Msxml2.XMLHttp.6.0" )
Call .open( "GET" , "https://raw.githubusercontent.com/simply-coded/easy-ie-automate/master/eiea.vbs" , False )
Call .send() : Call Execute(.responseText)
End With
'your code here...
Laden Sie die Datei eiea.vbs
herunter.
Sie können den Code kopieren und einfügen oder in Ihre VBScript-Datei importieren .
Class EasyIEAutomate
'paste the EasyIEAutomate class in place of this one.
End Class
'your code here...
Dim eieaPath : eieaPath = "c:pathtoeiea.vbs"
Execute(CreateObject( "Scripting.FileSystemObject" ).OpenTextFile(eieaPath, 1 ).ReadAll)
'your code here...
EINRICHTEN | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
Nachdem wir die Klasse nun zu unserer VBScript-Datei hinzugefügt haben, erstellen wir eine Instanz davon.
Set eIE = New EasyIEAutomate
'your code here
Standardmäßig wird dadurch nicht sofort ein IE-Prozess erstellt. Der Grund dafür ist, dass Sie, wenn Sie ein vorhandenes IE-Fenster oder eine Registerkarte geöffnet haben, diesen Prozess abrufen können, anstatt einen neuen zu erstellen. Das Erstellen oder Abrufen eines vorhandenen Fensters kann auf verschiedene Arten erreicht werden: Init() , ReBase() , RePoint() und Latest() .
Sehen wir uns einige Beispiele an:
' These all do the same thing.
'1.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
'2.
Set eIE = ( New EasyIEAutomate)(CreateObject( "InternetExplorer.Application" ))
'3.
Set eIE = New EasyIEAutomate
eIE(vbUseDefault)
'4.
Set eIE = New EasyIEAutomate
eIE(CreateObject( "InternetExplorer.Application" ))
'Already have the object
Set objIE = CreateObject( "InternetExplorer.Application" )
Set eIE = ( New EasyIEAutomate)(objIE)
'Already have the object
Set objIE = CreateObject( "InternetExplorer.Application" )
Set eIE = New EasyIEAutomate
eIE.ReBase objIE
Die Methode ReBase() kann jederzeit verwendet werden, um zu ändern, welchen IE-Prozess die Klasse steuert, und ist lediglich ein Alias für die Init()- Methode.
Set eIE = New EasyIEAutomate
'URL of the IE window that is already open.
eIE.RePoint "https://www.google.com/?gws_rd=ssl"
Set eIE = New EasyIEAutomate
'Will get the most recent IE process created.
eIE.Latest
Wenn Sie ohne IE-Prozess beginnen, erstellt EasyIEAutomate automatisch einen, wenn Sie mit der Verwendung der Klasse beginnen. Ein ein (1) Sekunden langes Popup mit der Meldung „Neues IE-Objekt automatisch initialisiert.“ Ich werde Sie informieren, wenn dies der Fall ist.
Set eIE = ( New EasyIEAutomate)( Nothing )
' Or just: Set eIE = New EasyIEAutomate
' This and many other methods and properties will trigger an automatic creation of an IE process if none exist.
eIE.Show
EINRICHTEN | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
Auf alle IE -Eigenschaften und -Methoden, die Sie verwenden, kann weiterhin über die Basiseigenschaft zugegriffen werden.
Set IEA = ( New EasyIEAutomate)(vbUseDefault)
'Navigate to Google.
IEA.Base.Navigate "http://www.google.com/"
'Adjust the look of the window.
IEA.Base.AddressBar = False
IEA.Base.MenuBar = False
IEA.Base.StatusBar = False
IEA.Base.Height = 500
IEA.Base.Width = 800
'Wait for window to load
While IEA.Base.Busy : WScript.Sleep( 400 ) : Wend
'Center the window on screen.
Dim SCR : Set SCR = IEA.Base.Document.ParentWindow.screen
IEA.Base.Left = (SCR.width - IEA.Base.Width) / 2
IEA.Base.Top = (SCR.height - IEA.Base.Height) / 2
'Show the window
IEA.Base.Visible = True
'Change the title of the window
IEA.Base.Document.title = "Google Searcher"
Wenn Ihnen das alles unbekannt vorkommt, würde ich Ihnen empfehlen, sich hier alle wichtigen Eigenschaften und Methoden anzusehen.
EINRICHTEN | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
Kommen wir nun zu einigen der neu hinzugefügten Eigenschaften.
@zurückkehren
[Array] – Ein Array verfügbarer IE-Prozesse (Fenster und Registerkarten).
' EXAMPLE 1:
Set eIE = New EasyIEAutomate
' Get number of tabs/windows opened.
count = UBound(eIE.Avail) + 1
' Collect their names & url and show them.
collect = ""
For Each ie In eIE.Avail
collect = collect & ie.LocationName & " - " & ie.LocationURL & vbLF
Next
MsgBox collect, vbOKOnly, "IE object(s) open = " & count
' EXAMPLE 2
Set google = New EasyIEAutomate
' Search for a tab/window using google
For Each ie In google.Avail
If InStr(ie.LocationURL, "google.com/" ) Then
google(ie)
Exit For
End If
Next
If google.Base Is Nothing Then
ans = MsgBox( "IE with google was not found. Create one?" , vbYesNo + vbQuestion)
If ans = vbYes Then
google(vbUseDefault) ' This creates a new IE process
google.Base.Navigate "https://www.google.com/"
Else
WScript.Quit
End If
End If
' Show the window if it was hidden or a new one was created.
google.Base.Visible = True
' Wait for it to load before trying to mess with it
While google.Base.Busy : WScript.Sleep 400 : Wend
' Search for something in google.
google.Base.Document.getElementById( "lst-ib" ).Value = "searching in google"
google.Base.Document.getElementById( "tsf" ).Submit
WScript.Sleep 2000
' This would be a better way to search, but these are just examples.
google.Base.Navigate "https://www.google.com/#q=alternative+search+in+google"
@zurückkehren
[Objekt] – Das Hauptobjekt des Internet Explorers. Siehe IE-Objekt.
@zurückkehren
[string] – Die URL des aktuellen IE-Prozesses. Identisch mit eIE.Base.LocationURL . Warnt, wenn kein IE-Prozess vorhanden ist.
@zurückkehren
[string] – Der Titel des aktuellen IE-Prozesses. Identisch mit eIE.Base.LocationName . Warnt, wenn kein IE-Prozess vorhanden ist.
EINRICHTUNG | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
Schließt den aktuellen IE-Prozess. Identisch mit eIE.Base.Quit . Warnt, wenn kein IE-Prozess vorhanden ist.
Schließt alle offenen IE-Prozesse (versteckt oder sichtbar).
Setzt die Sichtbarkeit des aktuellen IE-Prozesses auf „true“. Identisch mit eIE.Base.Visible = True . Warnt, wenn kein IE-Prozess vorhanden ist, und erstellt dann einen.
Setzt die Sichtbarkeit des aktuellen IE-Prozesses auf „false“. Identisch mit eIE.Base.Visible = False . Warnt, wenn kein IE-Prozess vorhanden ist, und erstellt dann einen.
Zentriert das Fenster auf dem Bildschirm. Wenn keine Website geladen ist, wird zu einer mit „about:blank“ navigiert. Um die Bildschirmauflösung zu erhalten, ist eine geladene Website erforderlich.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
' Centering before the browser is visible makes for a nicer looking experience.
eIE.Center
eIE.Show
Navigiert den IE-Prozess zu diesem Speicherort. Identisch mit eIE.Base.Navigate2 "URL_HERE" . Warnt, wenn kein IE-Prozess vorhanden ist, und erstellt dann einen.
@params
URL [Zeichenfolge] – Eine Adress-URL, zu der navigiert werden soll.
Erstellt eine neue Registerkarte und navigiert den IE-Prozess zu diesem Speicherort. Identisch mit eIE.Base.Navigate2 "URL_HERE", 2048 . Warnt, wenn kein IE-Prozess vorhanden ist, und erstellt dann einen.
@params
URL [Zeichenfolge] – Eine Adress-URL, zu der navigiert werden soll.
Erstellt eine neue Hintergrundregisterkarte und navigiert den IE-Prozess zu diesem Speicherort. Identisch mit eIE.Base.Navigate2 "URL_HERE", 4096 . Warnt, wenn kein IE-Prozess vorhanden ist, und erstellt dann einen.
@params
URL [Zeichenfolge] – Eine Adress-URL, zu der navigiert werden soll.
Wartet darauf, dass der aktuelle IE-Prozess vollständig geladen ist. Warnt, wenn kein IE-Prozess vorhanden ist.
Die Methode wartet darauf, dass das eingegebene Element vollständig geladen ist. Die aktuelle Seite könnte geladen werden, aber der darin enthaltene Inhalt, z. B. ein Iframe, könnte noch einige Zeit zum Laden benötigen.
@params
elem [Objekt] – Ein HTML-Elementobjekt wie ein Iframe.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
eIE.Navigate "https://rawgit.com/simply-coded/easy-ie-automate/master/practice/index.html"
eIE.Show
' Wait for main webpage to load
eIE.WaitForLoad
' Get an iframe on that page.
Set myFrame = eIE.Base.Document.getElementById( "ice_frame" )
' Wait for iframe to load if it hasn't already.
eIE.DeepWaitForLoad(myFrame)
' To access things inside an iframe it must respect the same origin policy!
MsgBox myFrame.contentDocument.querySelector( "img" ).src, vbOKOnly, "The image source is:"
Es gibt jedoch einen einfacheren Weg. Das nächste Beispiel macht dasselbe wie dieses, indem es eine Funktion namens Deeper() verwendet.
Die Methode wartet auf das Laden des Elements und gibt dann das contentDocument des Frames zurück. Warnt und beendet das Skript, wenn gegen die Same-Origin-Richtlinie verstoßen wird. Wird für den Zugriff/Bearbeitung von Dingen innerhalb eines Frames verwendet.
@params
query [string] – Eine Abfragezeichenfolge zum Abrufen des Iframes.
@zurückkehren
[object] – Das contentDocument des Rahmenelements als Objekt.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
eIE.Navigate "https://rawgit.com/simply-coded/easy-ie-automate/master/practice/index.html"
eIE.Show
' Waits for main webpage to load, selects the element, waits for it to load,
' and then returns the element's contentDocument. Alerts and quits if same
' origin policy is violated.
Set myFrame = eIE.Deeper( "#ice_frame" )
MsgBox myFrame.querySelector( "img" ).src, vbOKOnly, "The image source is:"
Ändert die Basis in ein anderes Internet Explorer-Objekt. Alias für die Standardmethode Init(). Ein Beispiel finden Sie im Abschnitt „Verwendung“.
@params
z. B. [Objekt] – Das Internet Explorer-Fenster-/Registerobjekt, in das Sie das Basisobjekt ändern möchten.
Ändert die Basis in ein anderes Internet Explorer-Objekt. Ein Beispiel finden Sie im Abschnitt „Verwendung“.
@params
URL [Zeichenfolge] – Eine URL eines Internet Explorer-Fensters/einer aktuell geöffneten Registerkarte, in die Sie das Basisobjekt ändern möchten.
Ändert die Basis auf das neueste Internet Explorer-Objekt. Ein Beispiel finden Sie im Abschnitt „Verwendung“.
Verwendet eIE.Base.Document.querySelector( query ), um ein Element abzurufen. Hier finden Sie eine Dokumentation zu Element.querySelector(). Hier sind die verschiedenen Möglichkeiten, nach Elementen zu suchen. Wartet vor der Suche darauf, dass das Dokument geladen wird, und gibt eine Warnung aus und wird beendet, wenn es nicht gefunden werden kann.
@params
query [string] – Die Abfragezeichenfolge, mit der das Element ausgewählt werden soll.
@zurückkehren
[Objekt] – Das gefundene Element als Objekt.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
eIE.Navigate "https://rawgit.com/simply-coded/easy-ie-automate/master/practice/index.html"
eIE.Show
' get various elements and interact with them
eIE.Query( ".titles" ).style.color = "deepskyblue"
eIE.Query( "input[name='email']" ).Value = "[email protected]"
eIE.Query( "#pass" ).Value = "bananas_are_the_universal_scale"
eIE.Query( "#milk" ).removeAttribute( "checked" )
eIE.Query( "input[type='radio'][value='female']" ).setAttribute( "checked" )
eIE.Query( "form > p > button" ).Click
Verwendet eIE.Base.Document.querySelectorAll( query ), um eine NodeList abzurufen. Hier sind die verschiedenen Möglichkeiten, nach Elementen zu suchen. Wartet vor der Suche auf das Laden des Dokuments und gibt eine Warnung aus und wird beendet, wenn etwas nicht gefunden werden kann.
@params
query [string] – Die Abfragezeichenfolge, mit der die Elemente ausgewählt werden sollen.
@zurückkehren
[Objekt] – Die gefundenen Elemente als NodeList-Objekt.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
eIE.Navigate "https://rawgit.com/simply-coded/easy-ie-automate/master/practice/index.html"
eIE.Show
' get elements with class="titles" and all <p> tag elements
Set list = eIE.QueryAll( ".titles, p" )
' change their style up a bit
For i = 0 To list.length - 1
list.item(i).style.backgroundColor = "white"
list.item(i).style.border = "2px solid deepskyblue"
list.item(i).style.fontFamily = "Consolas, monospace"
Next
EINRICHTEN | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
ADD
– Dokumentation zu README.md hinzugefügt.CHANGE
– Methoden wurden wie folgt umbenannt: NavigateT() in NavigateTab() und NavigateBT() in NavigateBgTab() .CHANGE
– ReBase() ist jetzt ein Alias für die Standard- Init()- Methode.ADD
– Zeitgesteuerte Popups für Fehler, die es nicht wert sind, beendet zu werden. Informationen zu den Methoden, die eine Warnung auslösen, finden Sie in der Dokumentation.CHANGE
– Beispiele für Übungsordner wurden in „challenge.vbs“ und „answers.vbs“ geändert, um die neueste Syntax widerzuspiegeln.ADD
– Erstveröffentlichung.EINRICHTEN | VERWENDUNG | IE-OBJEKT | EIGENSCHAFTEN | METHODEN | GESCHICHTE | KONTAKT
Jeremy England (SimplyCoded) – [email protected]
Wird unter der MIT-Lizenz vertrieben. Weitere Informationen finden Sie unter LICENSE
.