VBScript-将数组元素放入GetElementById

VBScript-将数组元素放入GetElementById,vbscript,Vbscript,我正在编写一个VBScript,它可以自动与某些网页进行交互。我在最后一步遇到了麻烦,脚本需要点击一个链接进行预订。每次的链接只有在时间空闲时才可用。我的代码的想法是简单地选择第一个可用的时间(我最初认为我可以通过使用Mid()和GetElementId来实现这一点,因为我知道每个链接ID的前7个字符,但无法实现这一点)。该数组包含一天中所有可用时间的ID。一些已经被获取,因此ID将不再存在于表单上 我有两个问题:- 1) getElementBy Id或Document.All.Item().

我正在编写一个VBScript,它可以自动与某些网页进行交互。我在最后一步遇到了麻烦,脚本需要点击一个链接进行预订。每次的链接只有在时间空闲时才可用。我的代码的想法是简单地选择第一个可用的时间(我最初认为我可以通过使用Mid()和GetElementId来实现这一点,因为我知道每个链接ID的前7个字符,但无法实现这一点)。该数组包含一天中所有可用时间的ID。一些已经被获取,因此ID将不再存在于表单上

我有两个问题:-

1) getElementBy Id或Document.All.Item().Click命令都不会接受数组中的元素-I get Object Required运行时错误

2) 如果getElementId找不到匹配的ID,它只会抛出一个Object required错误。我并没有预料到这一点,我认为我的elem变量将为nothing或null,并且我可以对此进行测试

有人能给我指点吗

'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)=“bookBtn0810”
次数(1)=“bookBtn0818”
次数(2)=“bookBtn0826”
模糊时间效用
昏暗的我
模糊元素
TimeAvail=“否”
i=0

现在执行While(TimeAvail=“No”)或(i操作,除非我非常愚蠢,否则您将无法将变量放置到不存在的元素中

我唯一能想到的是补充一句:

On Error Resume Next

开始时,它跳过了错误消息。您可能需要自己单独处理错误。

您真的需要
Chr(34)
s吗?我对“Set elem=IE.document.get”有点困惑-您需要“Set”和“IE”吗?如果ID不存在,抛出错误是我所期望的行为。您在hta?wscript?网页?cscript?中运行此代码是什么?我假设我需要Chr(34)为了在将每个数组元素传递到get-ElementById和click方法时包含双引号字符。@DoctorRout-是的,就是这样。Id可能不存在,因为它们所代表的时间可能已经被占用了。我想在尝试单击之前,我需要测试每个可能的时间/Id是否存在。我在给人的印象是,我可以通过设置变量来测试空对象。我正在电脑上的vbs文件中运行脚本。我想你应该删除
Chr(34)
s,看看这是否有帮助