2013-03-23 64 views
2

HTML對象可以在任何一個可以幫助我在使用VB腳本創建HTML DOM對象HTML DOM對象。我必須瀏覽HTML表單並在文本框中輸入值,或使用vb腳本和HTML DOm函數從下拉列表中選擇一個值。創建用於訪問HTML表單

我知道,創建我們可以用下面的語句一個XML DOM對象,所以呈三角下面有一個可用的任何語句來創建一個HTML DOM。

Set Xmlobj = CreateObject ("Microsoft.XMLDOm") 

Set Htmlobj = CreateObject ("Microsoft.HtmlDom") ' Is this avalibale when I tried it shows  error for object creattion, other workaround available. 

回答

2

沒有「HTMLDOM」對象,因爲連接HTML的次數多於XML。這需要JavaScript處理,會話處理,CSS處理,HTTP請求,cookie處理,緩存等,以將文本HTML轉換爲有意義的內存文檔對象。

如果所有的被實現,你有一個完整的瀏覽器。這就是爲什麼沒有這樣的COM對象。

爲了您的任務可能會直接通過COM自動化使用Internet Explorer:

Option Explicit 

Dim IE, queryField 

Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = True 

IE.Navigate "http://www.google.com" 

While IE.Busy Or IE.readyState <> 4 
    WScript.Sleep 100 
Wend 

Set queryField = GetFormFieldByName(IE.document, "q") 

If Not queryField Is Nothing Then 
    QueryField.value = "test" 
    QueryField.form.submit 
End If 

WScript.Sleep 5000 
IE.Quit 
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

Function GetFormFieldByName(Parent, FindName) 
    Dim FormFields, FormField 

    Set GetFormFieldByName = Nothing 
    Set FormFields = Parent.getElementsByTagName("INPUT") 

    For Each FormField In FormFields 
     If UCase(FormField.Name) = UCase(FindName) Then 
      Set GetFormFieldByName = FormField 
      Exit For 
     End If 
    Next 
End Function 
+0

謝謝地段!有人懷疑,在這種方法中,我們使用Internet Explorer的自動化對象模型來創建一個IE對象。並且我們正在結合HTML DOM屬性和函數。我懷疑我們是否可以將任何對象或屬性(HTML DOm的)與創建的IEobject鏈接起來?我的第二個疑問是爲什麼我們將IE與文檔屬性鏈接起來,並且這裏使用的「document」propery或object是HTML DOm或IE自動化對象模型。 – user1925406

+1

的'IE.document'是完全一樣的'document'對象,可以通過JavaScript在瀏覽器中運行看。有了它,您可以執行任何IE支持的操作。這就是爲什麼它被稱爲「自動化」:您使用外部腳本來遠程控制IE。 – Tomalak

+0

沒關係,我能理解,只有使用IE.document我們可以調用其他方法和HTML DOM屬性。但是這個術語「文檔」在這裏是一個對象,方法還是屬性? – user1925406

1
Set oDoc = CreateObject("HTMLFILE") 

oDoc.write "<html><head><title></title></head><body><div id='div'>hello</div></body></html>" 

Response.Write oDoc.getElementById("div").innerHTML 

-

WScript.Echo oDoc.getElementById("div").innerHTML 

輸出: -

你好