2012-09-04 22 views
1

我已經做了幾次,但我不知道爲什麼這次我的HTA vbscript正在大喊我關於Object不支持這個屬性或方法IE.Document.form1?HTA VBScript - IE CreateObject(InternetExplorer.Application)IE.Document.form1不支持屬性或方法

忽略Wait IE,2000 subs。

Function server_details(server_name) 
    dim returnArray(6) 

    Set IE = CreateObject("InternetExplorer.Application") 
    IE.Visible = True 
    IE.Navigate "http://website/Default.aspx" 
    Wait IE,2000 
    With IE.Document.form1 
     .txtServerName.value = server_name 
     .Button1.click 
    End With 

    Wait IE,4000 

    'get info returned 
    With IE.Document.all 
     serverOS = .txtOS.value 
     serverApp = .txtBusinessApp.value 
     serverClass = .txtServerClass.value 
     serverHost = .txtHost.value 
     serverEnv = .txtSupportEnvironment.value 
     serverCheckout = .txtCheckoutStatus.value 
    End With 

    IE.Quit 
    Set IE = Nothing 
    returnArray(0) = serverOS 
    returnArray(1) = ServerApp 
    returnArray(2) = serverClass 
    returnArray(3) = serverHost 
    returnArray(4) = serverEnv 
    returnArray(5) = serverCheckout 
    server_details = returnArray 
End Function 

我在我的HTA VBScript中也有這個功能,它工作正常。

Function subnetDetails(server_ip) 
    Set IE = CreateObject("InternetExplorer.Application") 
    IE.Visible = False 
    IE.Navigate "http://otherwebsite/detail.aspx" 
    Wait IE,2000 
    With IE.Document.aspnetForm 
     .[ctl00$_SUMMARY$txtIP].value = server_ip 
     .[ctl00$_SUMMARY$btnLoad].click 
    End With 

    'webscrape for TABLE id="ctl00_SUMMARY_gvSubnets" 
    Wait IE,9000 
    responseHTML = IE.Document.getElementByID("ctl00_SUMMARY_gvSubnets").outerHTML 
    IE.Quit 
    Set IE = Nothing 

    subnetDetails = responseHTML 
End Function 

發現form1在iframe中,可能是爲什麼我不能引用它。有任何想法嗎?

<iframe id="ctl00_ContentPlaceHolder1_I1" bordercolor="White" name="I1" src="CSIS.aspx" style="border-style: none; overflow: auto; height: 2500px; width: 1100px;" frameborder="no" scrolling="no"> 

<html> 
    <head> 
     <body> 
      <form name="form1" bla bla" 


</iframe> 
+0

好吧,可能會對某事。它看起來像我試圖廢除的頁面使用iframe。 form1位於名爲ct100_ContentPlaceHolder1_T1的iframe中。見上面的編輯。 – Jim

回答

0

很難忽略你的等待分,因爲可能存在原因。你似乎使用一個固定的時間量,同時uou應該使用類似

Do Until IE.readyState = 4 
    Wscript.Sleep 100 
Loop 

也遇到麻煩的情況下,更好地分離的對象級別每行一個,更容易調試

With IE 
    With .document 
    With ... 

,並註釋掉直到它工作

這些一般的指導方針,如果你發佈真正的URL和你的等待子我們可以給更直接的建議。

+0

這是一個HTA文檔,所以我不能做Wscript.Sleep。 – Jim

+0

它在.form1語句上失敗。 – Jim

+0

然後使用window.setTimeout,你正在加載什麼網址? – peter

1

好的,所以想通了。 iframe造成了所有的麻煩。對於那些具有相同錯誤消息的人,請嘗試檢查表單,並且元素不是您嘗試抓取的網站中的iframe的一部分。在網站上的工作後衛抓住iframe的來源,並把它放在你的vbscript而不是你擁有的那個。

祝你好運!

相關問題