Не могу войти на сайт через мой код VBA - PullRequest
0 голосов
/ 09 июля 2020

Я создал указанный ниже код для входа на веб-сайт https://www.tdscpc.gov.in/app/login.xhtml

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

Я прикрепил изображения веб-сайта, показывающие состояние:

a). после запуска код, но до нажатия кнопки входа.

  1. after running the code but before clicking login button.

b). and after clicking login button.

  1. и после нажатия кнопки входа в систему.

Я не могу понять, почему это происходит и что не так в моем коде.

Sub Login_Traces()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://www.tdscpc.gov.in/app/login.xhtml"
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

Set DOC = IE.document

DOC.getElementById("userId").Value = ThisWorkbook.Sheets("Traces ID & Password").Range("b3").Value

DOC.getElementById("psw").Value = ThisWorkbook.Sheets("Traces ID & Password").Range("c3").Value

DOC.getElementById("tanpan").Value = ThisWorkbook.Sheets("Traces ID & Password").Range("d3").Value


End Sub


1 Ответ

1 голос
/ 09 июля 2020

Я пытался протестировать ваш код на своей стороне, но не получил той же ошибки, что и ваш.

Я пытаюсь проверить источник этой страницы, но есть событие Onchange в поле «Имя пользователя» и «Пароль».

Вы можете попробовать запустить событие change после установки значения в поле, которое может помочь решить проблему. Функция события OnChnage отображает код captcha.

Пример кода для запуска события изменения:

Set ieEvent = htmldoc.createEvent("HTMLEvents")
ieEvent.initEvent "change", False, True
ie.document.all.Item("txt1").dispatchEvent ieEvent

Измененный код:

Sub Login_Traces()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://nriservices.tdscpc.gov.in/nriapp/login.xhtml"
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

Set DOC = IE.document

Set ieEvent = DOC.createEvent("HTMLEvents")

ieEvent.initEvent "change", False, True

DOC.getElementById("userId").Value = ThisWorkbook.Sheets("Sheet1").Range("A1").Value

IE.document.all.Item("userId").dispatchEvent ieEvent

DOC.getElementById("psw").Value = ThisWorkbook.Sheets("Sheet1").Range("A2").Value

IE.document.all.Item("psw").dispatchEvent ieEvent

DOC.getElementById("tanpan").Value = ThisWorkbook.Sheets("Sheet1").Range("A3").Value


End Sub

Вывод:

введите описание изображения здесь

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

...