IE11 Автоматизация через Excel VBA - Формы - PullRequest
0 голосов
/ 28 мая 2018

Это часть 2 из моего оригинального поста здесь .Теперь, когда я вошел в систему, мне нужно сделать два клика, чтобы отобразить информацию, которую я в конечном итоге пытаюсь очистить.Кажется, я не могу придумать, как правильно перейти к работе.Это все похоронено в форме.1-е изображение показывает структуру формы .2-е изображение показывает весь код , где я пытаюсь перейти по ссылке Текущая ситуация под пролетом Супервизора.Мне пришлось использовать следующее (как вы видите из моего предыдущего поста), чтобы IE оставался на связи, поэтому не уверен, что это как-то повлияет:

Dim objIE As Object

Set objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")

Пытаясь автоматизировать нажатие на вкладку "Текущая ситуация", я попытался без удачи (с 0 и без)

objIE.document.getElementById("1617")(0).Click

Я большезаинтересованы в получении образования в дополнение к получению ответа.Есть ли способ углубиться в информацию в форме?У меня сложилось впечатление, что ВСЕ элементы веб-страницы были загружены во время загрузки.Так неужели это не совсем элемент моего минимального понимания автоматизации веб-страниц?

Как примечание, я должен нажать Supervisor, чтобы отобразить дерево под ним.Заранее спасибо за вашу помощь!

ОБНОВЛЕНИЕ: Хорошо, я думаю, что это серьезный недосмотр.Исходя из моего предыдущего поста, логин работает отлично.Но после входа в систему создается новое окно.Так что я считаю, что это проблема, верно?Он не может найти ни один из этих идентификаторов или элементов, потому что он смотрит на исходный объект IE, а не на новое окно.Так как мне заставить его активировать / открыть новое окно?Извините, что пропустил это раньше!

1 Ответ

0 голосов
/ 28 мая 2018

Метод getElementById возвращает один элемент, а не коллекцию, в отличие, например, от getElementsByClassName (посмотрите на «Элемент» против «Элементы» в имени метода).Поэтому (0) или любой другой индекс сбора не следует использовать.

Правильный синтаксис:

objIE.document.getElementById("1617").Click

Для всплывающих окон попробуйте следующее:

Dim wURL As String
Dim myWindow As Object

For Each myWindow In CreateObject("Shell.Application").Windows

    wURL = myWindow.LocationURL

    If InStr(wURL, "constant_part_of_popup_window_link") <> 0 Then
         'do stuff
         myWindow.Quit
         Exit For
    End if

Next myWindow

Для доступа к элементу в iFrame:

myWindow.document.getElementById("frameMainMenu").contentWindow.document.getElementById("1617").Click
...