Kelas pembungkus otomatisasi di sekitar objek InternetExplorer yang membuatnya mudah dikendalikan dengan VBScript.
PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
Pertama, mari tambahkan kelas ke file VBScript kita sendiri.
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...
Unduh file eiea.vbs
.
Anda dapat menyalin & menempelkan atau mengimpor kode ke file VBScript Anda.
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...
PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
Sekarang kita telah menambahkan kelas ke file VBScript kita, mari kita buat sebuah instance darinya.
Set eIE = New EasyIEAutomate
'your code here
Secara default, ini tidak akan langsung membuat proses IE. Alasannya adalah agar jika Anda memiliki jendela atau tab IE yang terbuka, Anda dapat mengambil proses tersebut daripada membuat yang baru. Membuat atau mendapatkan jendela yang ada dapat dilakukan dengan beberapa cara: Init() , ReBase() , RePoint() , dan Terbaru() .
Mari kita lihat beberapa contoh:
' 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
Metode ReBase() dapat digunakan kapan saja untuk mengubah proses IE yang dikontrol kelas dan hanya merupakan alias untuk metode 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
Jika Anda memulai tanpa proses IE, EasyIEAutomate akan secara otomatis membuatnya saat Anda mulai menggunakan kelas. Popup satu (1) detik "Otomatis menginisialisasi objek IE baru." akan memberi tahu Anda jika ya.
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
PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
Semua properti dan metode IE yang Anda gunakan masih dapat diakses melalui Properti Dasar .
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"
Jika semua ini tampak asing bagi Anda maka saya sarankan untuk memeriksa semua properti dan metode utama di sini.
PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
Sekarang mari masuk ke beberapa properti baru yang ditambahkan.
@kembali
[array] - Serangkaian proses IE yang tersedia (jendela dan tab).
' 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"
@kembali
[objek] - Objek utama Internet Explorer. Lihat objek IE.
@kembali
[string] - URL proses IE saat ini. Sama seperti eIE.Base.LocationURL . Peringatan jika tidak ada proses IE.
@kembali
[string] - Judul proses IE saat ini. Sama seperti eIE.Base.LocationName . Peringatan jika tidak ada proses IE.
PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
Menutup proses IE saat ini. Sama seperti eIE.Base.Quit . Peringatan jika tidak ada proses IE.
Menutup semua proses IE yang terbuka (tersembunyi atau terlihat).
Menetapkan visibilitas proses IE saat ini ke true. Sama seperti eIE.Base.Visible = True . Memberi peringatan jika tidak ada proses IE, lalu membuatnya.
Menetapkan visibilitas proses IE saat ini ke false. Sama seperti eIE.Base.Visible = False . Memberi peringatan jika tidak ada proses IE, lalu membuatnya.
Memusatkan jendela pada layar. Jika tidak ada situs web yang dimuat, situs dengan "about:blank" akan dinavigasi. Situs web yang dimuat diperlukan untuk mendapatkan resolusi layar.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
' Centering before the browser is visible makes for a nicer looking experience.
eIE.Center
eIE.Show
Menavigasi proses IE ke lokasi ini. Sama seperti eIE.Base.Navigate2 "URL_HERE" . Memberi peringatan jika tidak ada proses IE, lalu membuatnya.
@params
url [string] - URL alamat untuk bernavigasi.
Membuat tab baru dan menavigasi proses IE ke lokasi ini. Sama seperti eIE.Base.Navigate2 "URL_HERE", 2048 . Memberi peringatan jika tidak ada proses IE, lalu membuatnya.
@params
url [string] - URL alamat untuk bernavigasi.
Membuat tab latar belakang baru dan menavigasi proses IE ke lokasi ini. Sama seperti eIE.Base.Navigate2 "URL_HERE", 4096 . Memberi peringatan jika tidak ada proses IE, lalu membuatnya.
@params
url [string] - URL alamat untuk bernavigasi.
Menunggu proses IE saat ini selesai memuat. Peringatan jika tidak ada proses IE.
Metode menunggu elemen yang dimasukkan selesai dimuat. Halaman saat ini dapat dimuat tetapi konten di dalamnya seperti iframe, masih memerlukan waktu untuk dimuat.
@params
elem [objek] - Objek elemen HTML seperti 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:"
Namun ada cara yang lebih mudah. Contoh berikutnya melakukan hal yang sama seperti ini dengan menggunakan fungsi yang disebut Deeper() .
Metode menunggu elemen dimuat dan kemudian mengembalikan dokumen konten bingkai. Memberi peringatan dan keluar dari skrip jika kebijakan asal yang sama dilanggar. Digunakan untuk mengakses/mengedit sesuatu dalam bingkai.
@params
sqery [string] - String kueri untuk mendapatkan iframe.
@kembali
[objek] - ContentDocument elemen bingkai sebagai objek.
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:"
Mengubah Basis ke objek Internet Explorer yang berbeda. Alias untuk metode Init() default. Contohnya dapat ditemukan di bagian penggunaan.
@params
yaitu [objek] - Objek jendela/tab Internet Explorer yang ingin Anda ubah objek Basisnya.
Mengubah Basis ke objek Internet Explorer yang berbeda. Contohnya dapat ditemukan di bagian penggunaan.
@params
url [string] - Url jendela/tab Internet Explorer yang sedang dibuka dan ingin Anda ubah objek Basisnya.
Mengubah Basis ke objek Internet Explorer terbaru. Contohnya dapat ditemukan di bagian penggunaan.
Menggunakan eIE.Base.Document.querySelector( squery ) untuk mengambil elemen. Berikut adalah dokumentasi tentang Element.querySelector(). Berikut berbagai cara untuk mencari elemen. Menunggu dokumen dimuat sebelum mencari, dan memperingatkan serta berhenti jika tidak dapat ditemukan.
@params
sqery [string] - String kueri untuk memilih elemen.
@kembali
[objek] - Elemen yang ditemukan sebagai objek.
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
Menggunakan eIE.Base.Document.querySelectorAll( squery ) untuk mengambil NodeList. Berikut berbagai cara untuk mencari elemen. Menunggu dokumen dimuat sebelum mencari, dan memperingatkan serta berhenti jika sesuatu tidak dapat ditemukan.
@params
sqery [string] - String kueri untuk memilih elemen.
@kembali
[objek] - Elemen yang ditemukan sebagai objek 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
PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
ADD
- Dokumentasi ditambahkan ke README.md .CHANGE
- Metode diganti namanya sebagai berikut: NavigateT() menjadi NavigateTab() , dan NavigateBT() menjadi NavigateBgTab() .CHANGE
- ReBase() kini menjadi alias untuk metode Default Init() .ADD
- Munculan berjangka waktu untuk kesalahan yang tidak layak untuk dihentikan. Lihat dokumentasi untuk metode apa yang mengingatkan.CHANGE
- Contoh folder latihan telah diubah di Challenge.vbs dan Answers.vbs untuk mencerminkan sintaksis terbaru.ADD
- Rilis awal.PENYIAPAN | PENGGUNAAN | IE-OBJEK | SIFAT | METODE | SEJARAH | KONTAK
Jeremy Inggris ( SimplyCoded ) - [email protected]
Didistribusikan di bawah lisensi MIT. Lihat LICENSE
untuk informasi lebih lanjut.