Автоматизация IE с помощью Excel VBA: без ввода на сайте - PullRequest
0 голосов
/ 07 мая 2018

Мне удалось перемещаться по сайту в интрасети: кнопки, вкладки, выпадающие меню и т. Д. Остается одна проблема: печатать.

Я могу регулярно писать в полях, как обычно при навигации по сайтам. Например, на странице входа в систему:

IE.document.getElementsByTagName("INPUT")(0).Value = myId
IE.document.getElementsByTagName("INPUT")(1).Value = myPassword
IE.document.getElementsByTagName("button")(0).Click

К сожалению, в этом случае, несмотря на то, что поля заполнены, когда я нажимаю кнопку отправить, система получает эту ошибку:

«Все поля должны быть заполнены»

So, I've tried to complete the fields character by character, but the result is the same.


Dim HTMLdoc As HTMLDocument
Set HTMLdoc = IE.document
Dim evtKeyDown As Object
Set evtKeyDown = HTMLdoc.createEvent("keyboardevent")
evtKeyDown.initEvent "keydown", True, False
'******************************
Dim i As Long
Dim userInput As HTMLInputElement
Set userInput = HTMLdoc.getElementsByTagName("input")(0)
userInput.Value = ""
For i = 1 To Len(myId)
  userInput.Value = userInput.Value & Mid(myId, i, 1)
  userInput.dispatchEvent evtKeyDown 
  DoEvents
Next
'******************************
Dim j As Long
Dim userInput2 As HTMLInputElement
Set userInput2 = HTMLdoc.getElementsByTagName("input")(1)
userInput2.Value = ""
For j = 1 To Len(myCode)
  userInput2.Value = userInput2.Value & Mid(myPassword, j, 1)
  userInput2.dispatchEvent evtKeyDown 
  DoEvents
Next
'******************************
IE.document.getElementsByTagName("button")(0).Click

Возможно, событие не инициировано должным образом, или это неправильное событие для создания.

В любом случае, я заметил необычное изменение HTML-кода:

<tr id="access123" class="row" style="width:330px;">
input id="log" class="textbox" type="text" maxlength="18" value=""

Когда я нажимаю на поле ввода, HTML-код становится:

<tr id="access123" class="row-row-over" style="width:330px;">
input id="log" class="textbox-textbox-focus" type="text" maxlength="18" value="">
...