Web Side Login / no debug.print отображается в указанном окне c - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу войти на веб-сайт. После долгих проб и ошибок я наконец-то написал код, который работает довольно хорошо. ... но получил пробники Сначала я получил пробу, которая возникает и говорит
нет соединения с сервером Это проб я решил

Установить ie = CreateObject ("new: {D5E8041D-920F-45e9-B8FB- B1DEB82C6E5E} ")

Следующая проба заключается в том, что когда я запускаю код Шаг за шагом (триггер F8), код работает довольно хорошо. Но при запуске F5 я получил пробу в строке Set UserNameInput = LoginForm.getElementsByClassName (" prePopulatedCredentials ") (0) Это .. Я не понимаю

Следующий Проб - это debug.print" Prob ". Хотя я активировал Window (STR + G), debug.print не отображается. Почему я хочу увидеть результат печати отладки? Итак ... Я хочу выяснить, какую кнопку мне нужно активировать, используя код VBA. В моем случае у меня есть 3 варианта: Поиск, новый поиск, go назад или Вход в систему. Я нашел решение для другой веб-страницы. TestLogin () Dim ... Dim LoginForm As MS HTML .HTMLFormElement .. code LoginForm.submit

Для другой веб-страницы я хочу найти кнопки Поиск, новый поиск, go назад

Код почти такой же

Sub Get () Dim ... Dim HTML Button AS MS HTML .IHTMLELEMENT ... Code

Установить кнопки = HTMLDo c .GetElementsByTagName («кнопка») для каждого HTMLButton в HTMLButtons Debug.Print HTMLButton.className, HTMLButton.tagName, HTMLButton.Id, HTMLButton.innerText Следующая кнопка

End Sub

* 1019 в этом если код выполняется до строки Set Buttons = HTMLDo c .GetElementsByTagName ("button"), и он переходит к End Sub

Здесь мой код для первой веб-стороны с вероятностью, вызывающей код с помощью F8 или F5

Sub TestLogin()

Dim ie As SHDocVw.InternetExplorerMedium
Sub TestLogin()
Dim ie As SHDocVw.InternetExplorerMedium
Dim doc As MSHTML.HTMLDocument
Dim LoginForm As MSHTML.HTMLFormElement
Dim UserNameInput As MSHTML.HTMLInputElement
Dim PasswordInput As MSHTML.HTMLInputElement

Set ie = New SHDocVw.InternetExplorer

' Here I found a solution in the www regarding the Prob Net.Framework

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

ie.Visible = True
ie.Navigate Sheet1.Range("B1").Text


Do While ie.ReadyState <> READYSSTATE_COMPLETE And ie.Busy
Loop

Set doc = ie.Document

Set LoginForm = doc.getElementById(Sheet1.Range("B4").Text)
Set UserNameInput = LoginForm.getElementsByClassName("prePopulatedCredentials")(0)
Set PasswordInput = LoginForm.getElementsByClassName("prePopulatedCredentials ")(1)

UserNameInput.Value = Sheet1.Range("B2").Text
PasswordInput.Value = Sheet1.Range("B3").Text

Stop

'LoginForm.submit

End Sub

А вот код для 2-ой веб-страницы с отладкой Prob Печать

Sub Get()

Dim ie As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument

Dim HTMLInput As MSHTML.IHTMLElement
Dim UserNameInput As MSHTML.HTMLInputElement
Dim VornameInput As MSHTML.HTMLInputElement

Dim HTMLButton As MSHTML.IHTMLElement
Dim HTMLButtons As MSHTML.IHTMLElementCollection

Dim SecurityWindow As Object

Set ie = New SHDocVw.InternetExplorer
Set ie = CreateObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")


ie.Visible = True
ie.Navigate Tabelle1.Range("B1").Text

Do While ie.ReadyState <> READYSSTATE_COMPLETE And ie.Busy
Loop

Set HTMLDoc = ie.Document
Set UserNameInput = HTMLDoc.getElementById("sur")
Set VornameInput = HTMLDoc.getElementById("given")

UserNameInput.Value = Sheets1.Range("B2").Text
VornameInput.Value = Sheets1.Range("B3").Text

Stop

Set HTMLButtons = HTMLDoc.getElementsByTagName("btn")
     For Each HTMLButton In HTMLButtons
    Debug.Print HTMLButtons.className, HTMLButtons.tagName, HTMLButtons.ID,      HTMLButtons.innerText
          Next HTMLButton

End Sub

Что я сделал не так или пропустил?

Спасибо за любую помощь И ... самое главное Примите все ваши заботы С наилучшими пожеланиями, оставайся в безопасности и будь здоров!

Пит

1 Ответ

0 голосов
/ 16 апреля 2020

Для вашей первой проблемы:

Похоже на проблему, связанную с синхронизацией.

Я предлагаю вам подождать несколько секунд, прежде чем выполнить строку кода проблемной строки c.

Это может помочь получить значение и решить эту проблему.

Для вашего второго вопроса:

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

...