VBScript로 쉽게 제어할 수 있도록 해주는 InternetExplorer 개체 주변의 자동화 래퍼 클래스입니다.
설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
먼저 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...
eiea.vbs
파일을 다운로드합니다.
코드를 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...
설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
이제 VBScript 파일에 클래스를 추가했으므로 클래스의 인스턴스를 만들어 보겠습니다.
Set eIE = New EasyIEAutomate
'your code here
기본적으로 이는 IE 프로세스를 즉시 생성하지 않습니다 . 그 이유는 기존 IE 창이나 탭이 열려 있는 경우 새 프로세스를 만드는 대신 해당 프로세스를 가져올 수 있기 때문입니다. 기존 창을 만들거나 가져오는 방법은 Init() , ReBase() , RePoint() 및 Late() 와 같은 몇 가지 방법으로 수행할 수 있습니다.
몇 가지 예를 살펴보겠습니다.
' 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
ReBase() 메소드는 클래스가 제어하는 IE 프로세스를 변경하기 위해 언제든지 사용할 수 있으며 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
IE 프로세스 없이 시작하는 경우 클래스 사용을 시작할 때 EasyIEAutomate가 자동으로 IE 프로세스를 생성합니다. "새 IE 개체를 자동으로 초기화했습니다." 라는 1초 팝업. 그렇다면 알려드리겠습니다.
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
설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
사용 중인 모든 IE 속성 과 메서드는 여전히 기본 속성을 통해 액세스할 수 있습니다.
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"
이 모든 내용이 낯설다면 여기에서 모든 주요 속성과 메서드를 확인해 보시기 바랍니다.
설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
이제 추가된 새로운 속성 중 일부를 살펴보겠습니다.
@반품
[배열] - 사용 가능한 IE 프로세스(창 및 탭)의 배열입니다.
' 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"
@반품
[개체] - 기본 Internet Explorer 개체입니다. IE 개체를 참조하세요.
@반품
[string] - 현재 IE 프로세스의 URL입니다. eIE.Base.LocationURL 과 동일합니다. IE 프로세스가 없으면 경고합니다.
@반품
[string] - 현재 IE 프로세스의 제목입니다. eIE.Base.LocationName 과 동일합니다. IE 프로세스가 없으면 경고합니다.
설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
현재 IE 프로세스를 닫습니다. eIE.Base.Quit 과 동일합니다. IE 프로세스가 없으면 경고합니다.
열려 있는 모든 IE 프로세스(숨겨지거나 표시됨)를 닫습니다.
현재 IE 프로세스의 가시성을 true로 설정합니다. eIE.Base.Visible = True 와 동일합니다. IE 프로세스가 없으면 경고한 다음 프로세스를 생성합니다.
현재 IE 프로세스의 가시성을 false로 설정합니다. eIE.Base.Visible = False 와 동일합니다. IE 프로세스가 없으면 경고한 다음 프로세스를 생성합니다.
창을 화면 중앙에 맞춥니다. 로드된 웹사이트가 없으면 "about:blank"가 있는 웹사이트로 이동됩니다. 화면 해상도를 얻으려면 로드된 웹사이트가 필요합니다.
Set eIE = ( New EasyIEAutomate)(vbUseDefault)
' Centering before the browser is visible makes for a nicer looking experience.
eIE.Center
eIE.Show
IE 프로세스를 이 위치로 이동합니다. eIE.Base.Navigate2 "URL_HERE" 와 동일합니다. IE 프로세스가 없으면 경고한 다음 프로세스를 생성합니다.
@params
url [문자열] - 탐색할 주소 URL입니다.
새 탭을 만들고 IE 프로세스를 이 위치로 이동합니다. eIE.Base.Navigate2 "URL_HERE", 2048 과 동일합니다. IE 프로세스가 없으면 경고한 다음 프로세스를 생성합니다.
@params
url [문자열] - 탐색할 주소 URL입니다.
새 배경 탭을 만들고 IE 프로세스를 이 위치로 이동합니다. eIE.Base.Navigate2 "URL_HERE", 4096 과 동일합니다. IE 프로세스가 없으면 경고한 다음 프로세스를 생성합니다.
@params
url [문자열] - 탐색할 주소 URL입니다.
현재 IE 프로세스가 로드를 완료할 때까지 기다립니다. IE 프로세스가 없으면 경고합니다.
이 메서드는 입력된 요소의 로드가 완료될 때까지 기다립니다. 현재 페이지를 로드할 수 있지만 iframe과 같은 페이지 내부의 콘텐츠는 로드하는 데 여전히 시간이 필요할 수 있습니다.
@params
elem [객체] - iframe과 같은 HTML 요소 객체입니다.
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:"
그러나 더 쉬운 방법이 있습니다. 다음 예제에서는 Deeper() 라는 함수를 사용하여 이 예제와 동일한 작업을 수행합니다.
메서드는 요소가 로드될 때까지 기다린 다음 프레임의 contentDocument를 반환합니다. 동일 원본 정책을 위반하면 경고하고 스크립트를 종료합니다. 프레임 내의 항목에 액세스/편집하는 데 사용됩니다.
@params
squery [문자열] - iframe을 가져오기 위한 쿼리 문자열입니다.
@반품
[object] - 프레임 요소의 contentDocument를 객체로 사용합니다.
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:"
Base를 다른 Internet Explorer 개체로 변경합니다. 기본 Init() 메서드의 별칭입니다. 예제는 사용법 섹션에서 찾을 수 있습니다.
@params
즉, [개체] - 기본 개체를 변경하려는 Internet Explorer 창/탭 개체입니다.
Base를 다른 Internet Explorer 개체로 변경합니다. 예제는 사용법 섹션에서 찾을 수 있습니다.
@params
url [문자열] - 기본 개체를 변경하려는 현재 열려 있는 Internet Explorer 창/탭의 URL입니다.
Base를 최신 Internet Explorer 개체로 변경합니다. 예제는 사용법 섹션에서 찾을 수 있습니다.
eIE.Base.Document.querySelector(squery)를 사용하여 요소를 검색합니다. 다음은 Element.querySelector()에 대한 문서입니다. 요소를 검색하는 다양한 방법은 다음과 같습니다. 검색하기 전에 문서가 로드될 때까지 기다리고, 찾을 수 없으면 경고하고 종료합니다.
@params
쿼리 [문자열] - 요소를 선택하는 데 사용할 쿼리 문자열입니다.
@반품
[객체] - 발견된 요소를 객체로 나타냅니다.
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
eIE.Base.Document.querySelectorAll(querySelectorAll)을 사용하여 NodeList를 검색합니다. 요소를 검색하는 다양한 방법은 다음과 같습니다. 검색하기 전에 문서가 로드될 때까지 기다리고, 무언가를 찾을 수 없으면 경고하고 종료합니다.
@params
쿼리 [문자열] - 요소를 선택하는 데 사용할 쿼리 문자열입니다.
@반품
[객체] - 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
설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
ADD
- README.md 에 문서가 추가되었습니다.CHANGE
- 메서드 이름이 NavigateT() 에서 NavigateTab() 로, NavigateBT() 에서 NavigateBgTab() 로 변경되었습니다.CHANGE
- ReBase()는 이제 Default Init() 메서드의 별칭입니다.ADD
- 종료할 가치가 없는 오류에 대한 시간 제한 팝업. 경고 방법에 대한 설명서를 참조하세요.CHANGE
- 최신 구문을 반영하기 위해 Challenge.vbs 및 Answers.vbs 의 연습 폴더 예제가 변경되었습니다.ADD
- 최초 릴리스.설정 | 사용법 | IE-객체 | 속성 | 방법 | 역사 | 연락하다
제레미 잉글랜드(SimplyCoded) - [email protected]
MIT 라이센스에 따라 배포됩니다. 자세한 내용은 LICENSE
참조하세요.