2012-01-11 58 views
1

我在寫一個自動與某些網頁交互的VBScript。我在腳本需要點擊鏈接進行預訂的最後一步遇到了麻煩。每次的鏈接只有在免費的時候纔可用。我的代碼的想法是簡單地選擇第一次可用(我最初雖然我可以通過使用Mid()和GetElementId來做到這一點,因爲我知道每個鏈接ID的前7個字符,但不能得到這個工作)。該數組包含一天中所有可能時間的ID。有些已經被拿走了,因此ID將不再存在於表格中。VBScript - 將數組元素放入GetElementById

我有2個問題: - 。

1)無論getElementBy ID或Document.All.Item()點擊命令將接受來自數組中的元素 - 我得到一個必選對象運行時錯誤。

2)如果getElementId找不到匹配的ID,它只會拋出一個Object必需的錯誤。我並沒有期待這一點,我認爲我的elem變量不會是空的,我可以測試這個。

任何人都可以給我任何指針?

'This is a shortened version of my array- there are lots more times! 
Times(0)="bookBtn0810" 
Times(1)="bookBtn0818" 
Times(2)="bookBtn0826" 

Dim TimeAvail 
Dim i 
Dim elem 

TimeAvail = "No" 
i = 0 

Do While (TimeAvail = "No") or (i<3) 
    Set elem = IE.Document.GetElementById(Chr(34) & Times(i) & Chr(34)) 'Chr(34) is to add "" 
    if elem is nothing then 
     TimeAvail = "No" 
     i=i+1 
    else 
     TimeAvail = "Yes" 
     IE.Document.All.Item(Chr(34) & Times(i) & Chr(34)).click 
    end if 
Loop 
+0

你真的需要Chr(34)嗎? – 2012-01-12 12:31:06

+0

我對「Set elem = IE.document.get」有些困惑 - 你需要「set」和「ie。」嗎? 如果ID不存在,則拋出錯誤是我期望的行爲。 你在hta中運行這段代碼是什麼? WScript的?一個網頁? CSCRIPT? – Simon 2012-01-12 18:48:58

+0

我假設我需要Chr(34)以便在將每個數組元素傳遞給get ElementById並單擊方法時包含雙引號字符。 – BadGolfer 2012-01-12 22:03:42

回答

0

現在,除非我很愚蠢,否則你將無法將變量放在一個不存在的元素上。

我能想到的唯一的事情是添加:

On Error Resume Next 

在開始的時候,所以它跳過錯誤消息。您可能需要分別處理錯誤。