Una clase contenedora de automatización alrededor del objeto InternetExplorer que facilita su control con VBScript.
CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
Primero, agreguemos la clase a nuestro propio archivo VBScript.
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...
Descargue el archivo eiea.vbs
.
Puede copiar y pegar o importar el código en su archivo VBScript.
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...
CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
Ahora que hemos agregado la clase a nuestro archivo VBScript, creemos una instancia del mismo.
Set eIE = New EasyIEAutomate
'your code here
De forma predeterminada, esto no creará un proceso de IE inmediatamente. La razón de esto es que si tiene abierta una ventana o pestaña de IE existente, puede tomar ese proceso en lugar de crear uno nuevo. Crear u obtener una ventana existente se puede lograr de varias maneras: Init() , ReBase() , RePoint() y Latest() .
Veamos algunos ejemplos:
' 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
El método ReBase() se puede utilizar en cualquier momento para cambiar el proceso de IE que controla la clase y es solo un alias para el método Init() .
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
Si comienza sin ningún proceso de IE, EasyIEAutomate creará uno automáticamente cuando comience a usar la clase. Una ventana emergente de un (1) segundo de "Inicialización automática de un nuevo objeto IE". Te avisaré si es así.
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
CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
Aún se puede acceder a todas las propiedades y métodos de IE que está acostumbrado a través de la propiedad base .
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"
Si todo esto le resulta desconocido, le recomendaría que consulte todas las propiedades y métodos principales aquí.
CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
Ahora veamos algunas de las nuevas propiedades agregadas.
@devolver
[matriz]: una variedad de procesos de IE disponibles (ventanas y pestañas).
' 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"
@devolver
[objeto] - El objeto principal de Internet Explorer. Ver objeto IE.
@devolver
[cadena]: la URL del proceso de IE actual. Igual que eIE.Base.LocationURL . Alertas si no existe ningún proceso de IE.
@devolver
[cadena]: el título del proceso IE actual. Igual que eIE.Base.LocationName . Alertas si no existe ningún proceso de IE.
CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
Cierra el proceso IE actual. Igual que eIE.Base.Quit . Alertas si no existe ningún proceso de IE.
Cierra todos los procesos abiertos de IE (ocultos o visibles).
Establece la visibilidad del proceso IE actual en verdadero. Igual que eIE.Base.Visible = True . Alerta si no existe ningún proceso de IE y luego crea uno.
Establece la visibilidad del proceso IE actual en falso. Igual que eIE.Base.Visible = False . Alerta si no existe ningún proceso de IE y luego crea uno.
Centra la ventana en la pantalla. Si no hay ningún sitio web cargado, se navegará a uno con "about:blank". Es necesario un sitio web cargado para obtener la resolución de la pantalla.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
' Centering before the browser is visible makes for a nicer looking experience.
eIE.Center
eIE.Show
Navega el proceso de IE a esta ubicación. Igual que eIE.Base.Navigate2 "URL_HERE" . Alerta si no existe ningún proceso de IE y luego crea uno.
@params
url [cadena]: una dirección URL a la que navegar.
Crea una nueva pestaña y navega por el proceso de IE hasta esta ubicación. Igual que eIE.Base.Navigate2 "URL_HERE", 2048 . Alerta si no existe ningún proceso de IE y luego crea uno.
@params
url [cadena]: una dirección URL a la que navegar.
Crea una nueva pestaña de fondo y navega por el proceso de IE hasta esta ubicación. Igual que eIE.Base.Navigate2 "URL_HERE", 4096 . Alerta si no existe ningún proceso de IE y luego crea uno.
@params
url [cadena]: una dirección URL a la que navegar.
Espera a que el proceso actual de IE termine de cargarse. Alertas si no existe ningún proceso de IE.
El método espera a que el elemento ingresado termine de cargarse. La página actual podría cargarse, pero el contenido dentro de ella, como un iframe, aún podría necesitar tiempo para cargarse.
@params
elem [objeto] - Un objeto de elemento HTML como un 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:"
Sin embargo, hay una manera más fácil. El siguiente ejemplo hace lo mismo que este usando una función llamada Deeper() .
El método espera a que se cargue el elemento y luego devuelve el contentDocument del marco. Alerta y cierra el script si se infringe la misma política de origen. Se utiliza para acceder/editar elementos dentro de un marco.
@params
squery [cadena]: una cadena de consulta para obtener el iframe.
@devolver
[objeto]: el contenido del elemento del marco como objeto.
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:"
Cambia la Base a un objeto diferente de Internet Explorer. Alias del método Init() predeterminado. Puede encontrar un ejemplo en la sección de uso.
@params
es decir, [objeto]: el objeto de ventana/pestaña de Internet Explorer al que desea cambiar el objeto Base.
Cambia la Base a un objeto diferente de Internet Explorer. Se puede encontrar un ejemplo en la sección de uso.
@params
url [cadena]: una URL de una ventana/pestaña de Internet Explorer que está abierta actualmente y a la que desea cambiar el objeto Base.
Cambia la Base al objeto más reciente de Internet Explorer. Se puede encontrar un ejemplo en la sección de uso.
Utiliza eIE.Base.Document.querySelector( squery ) para recuperar un elemento. Aquí hay documentación sobre Element.querySelector(). Estas son las diversas formas de buscar elementos. Espera a que se cargue el documento antes de buscar, alerta y sale si no se puede encontrar.
@params
squery [cadena]: la cadena de consulta para seleccionar el elemento.
@devolver
[objeto] - El elemento encontrado como objeto.
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
Utiliza eIE.Base.Document.querySelectorAll( squery ) para recuperar una NodeList. Estas son las diversas formas de buscar elementos. Espera a que se cargue el documento antes de buscar, alerta y sale si no se puede encontrar algo.
@params
squery [cadena]: la cadena de consulta para seleccionar los elementos.
@devolver
[objeto]: los elementos encontrados como un objeto NodeList.
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
CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
ADD
: documentación agregada a README.md .CHANGE
: los métodos cambiaron de nombre de la siguiente manera: NavigateT() a NavigateTab() y NavigateBT() a NavigateBgTab() .CHANGE
: ReBase() ahora es un alias para el método Init() predeterminado.ADD
: ventanas emergentes cronometradas para errores que no vale la pena abandonar. Consulte la documentación para saber qué métodos alertan.CHANGE
: los ejemplos de carpetas de práctica han cambiado en desafío.vbs y respuestas.vbs para reflejar la sintaxis más nueva.ADD
- Lanzamiento inicial.CONFIGURACIÓN | USO | IE-OBJETO | PROPIEDADES | MÉTODOS | HISTORIA | CONTACTO
Jeremy Inglaterra (SimplyCoded) - [email protected]
Distribuido bajo licencia MIT. Consulte LICENSE
para obtener más información.