Как получить доступ к элементам внутри коллекции HTML в VBA? - PullRequest
1 голос
/ 24 октября 2019

Я использовал следующий код для создания коллекции, внутри которой у меня есть несколько предметов. Однако я не знаю, как получить доступ к этим элементам или их свойствам. Например, одним из этих элементов является флажок, который имеет свойство Checked, которое может быть истинным или ложным. Вещи, которые я пробовал, которые потерпели неудачу:

objCollection.item5

objCollection (5)

objCollection.Item (5)

Вот мой код:

Dim objIE As InternetExplorer 'special object variable representing the IE browser

'initiating a new instance of Internet Explorer and asigning it to objIE
Set objIE = New InternetExplorer

'make IE browser visible (False would allow IE to run in the background)
objIE.Visible = True

'navigate IE to this web page
objIE.Navigate "https://secure01b.chase.com/web/auth/dashboard#/dashboard/overviewAccounts/overview/index"

'wait here a few seconds while the browser is busy
Do While objIE.Busy = True Or objIE.ReadyState <> 4: DoEvents: Loop

Set objCollection = objIE.Document.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("input")

Конечная цель всего этого процесса состоит в том, чтобы иметь возможность войти на эту страницу с помощью макроса для получения моих кредитных расходов, чтобы я мог выполнить некоторые манипуляции с данными Excel.

РЕДАКТИРОВАТЬ: Вот результаты запуска кода, когда я смотрю коллекцию: objCollection Watch Results

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Как сказал QHarr, индекс списка Коллекции начинается с 0, если вы хотите найти 5-й элемент, мы можем использовать objCollection(4) или objCollection.item(4).

Кроме того, мы также можем найтиспециальный элемент с помощью метода getElementbyId, например:

  Dim userText As Object, rememberCheckBox As Object
  Set userText = objIE.Document.getElementsbyTagName("iframe")(0).contentDocument.getElementbyId("userId-input-field")
  userText.Value = "AAA"   'set value.

  Set rememberCheckBox = objIE.Document.getElementsbyTagName("iframe")(0).contentDocument.getElementbyId("input-useToken")
  rememberCheckBox.Click  'click the useToken checkbox to check it.

После использования инструментов разработчика F12 для проверки элементов вашего веб-сайта я обнаружил, что вы устанавливаете флажок, используя CSS-класс checkbox__input checkbox__input--checked вместоиспользуя свойство checked. Вы можете использовать инструменты разработчика F12, чтобы проверить это.

Итак, если вы хотите установить флажок, после нахождения флажка мы можем щелкнуть его, чтобы проверить его. Вы можете сослаться на приведенный выше код или использовать следующий код:

    objCollection.Item(4).Click

    objCollection(4).Click
0 голосов
/ 24 октября 2019

Индексирование начинается с 0, поэтому, если вам нужен 5-й элемент, вам нужен индекс 4. Также используйте .item (4) или просто (4)

objCollection.item(4)
objCollection(4)

Количество элементов в коллекции исходит от

HTMLItemCol.length
...