VBScript - Помещение элемента массива в GetElementById - PullRequest
1 голос
/ 12 января 2012

Я пишу VBScript, который автоматически взаимодействует с некоторыми веб-страницами. У меня возникли проблемы на последнем этапе, когда сценарий должен нажать на ссылку, чтобы сделать заказ. Ссылка для каждого времени будет доступна, только если это время бесплатно. Идея моего кода состоит в том, чтобы просто выбрать первый доступный раз (изначально я думал, что смогу сделать это, используя Mid () и GetElementId, поскольку я знаю первые 7 символов каждого идентификатора ссылки, но не смог заставить это работать). Массив содержит идентификаторы для всех возможных времен, доступных за день. Некоторые из них уже будут заняты, так что ID больше не будет существовать в форме.

У меня 2 проблемы: -

1) Ни getElementBy Id, ни Document.All.Item (). Команды щелчка не примут элемент из массива - я получаю ошибку времени выполнения Object Required.

2) Если getElementId не находит подходящего идентификатора, он просто выдает ошибку «Требуется объект». Я не ожидал этого, я думал, что моя переменная 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

1 Ответ

0 голосов
/ 15 апреля 2012

Теперь, если я не очень глуп, вы не сможете разместить переменную в несуществующем элементе.

Единственное, что я могу придумать, это добавить:

On Error Resume Next

В начале, поэтому пропускает сообщение об ошибке. Возможно, вам придется самостоятельно обработать ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...