Веб-сайт не распознает выбор, сделанный с помощью кода VBA - PullRequest
1 голос
/ 14 октября 2019

enter image description here

Ниже упомянутый код работает нормально, проблема, с которой я сталкиваюсь, заключается в том, что когда я вхожу в CAPTCHA и нажимаю кнопку «Продолжить», веб-сайт не распознает выбордля вкладки NetBanking указанный выбор выполняется только с помощью указанного ниже кода VBA.

Я должен выбрать его вручную, а затем только дальше.

Ошибка помечена красной стрелкойна прикрепленном изображении.

Какая должна быть возможная коррекция?

Sub TDS_Autofill()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://onlineservices.tin.egov-nsdl.com/etaxnew/tdsnontds.jsp"
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

Set doc = IE.document
doc.parentWindow.execScript "sendRequest(281)", "JavaScript"

Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop


If ThisWorkbook.Sheets("Challan AutoFill").Range("n2").Value = "Company" Then
doc.getElementById("0020").Click
ElseIf ThisWorkbook.Sheets("Challan AutoFill").Range("n2").Value = "Non Company" Then
doc.getElementById("0021").Click
End If



If ThisWorkbook.Sheets("Challan AutoFill").Range("p2").Value = "(200) TDS/TCS Payable by Taxpayer" Then
doc.getElementById("200").Click
ElseIf ThisWorkbook.Sheets("Challan AutoFill").Range("p2").Value = "(400) TDS/TCS Regular Assessment" Then
doc.getElementById("400").Click
End If


IE.document.querySelector("select.form-control").selectedIndex = ThisWorkbook.Sheets("Challan AutoFill").Range("s2").Value



doc.getElementById("NetBanking").Click

doc.getElementById("NetBank_Name_c").Value = ThisWorkbook.Sheets("Challan AutoFill").Range("u2").Value


doc.getElementsByName("TAN")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("b2").Value

IE.document.querySelector("select[name=AssessYear]").selectedIndex = ThisWorkbook.Sheets("Challan AutoFill").Range("m2").Value


doc.getElementsByName("Add_Line1")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("c2").Value

doc.getElementsByName("Add_Line2")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("d2").Value

doc.getElementsByName("Add_Line3")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("e2").Value

doc.getElementsByName("Add_Line4")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("f2").Value

doc.getElementsByName("Add_Line5")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("g2").Value


IE.document.querySelector("select[name=Add_State]").selectedIndex = 21


doc.getElementsByName("Add_PIN")(1).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("i2").Value

doc.getElementsByName("Add_EMAIL")(0).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("j2").Value

doc.getElementsByName("Add_MOBILE")(0).Value = ThisWorkbook.Sheets("Challan AutoFill").Range("K2").Value

End Sub

1 Ответ

1 голос
/ 15 октября 2019

Запустить события onchange, связанные с каждым раскрывающимся списком (select). Кроме того, повсюду используйте более быстрые селекторы CSS, и вы можете улучшить условия ожидания загрузки страницы. Замените селекторы типа + атрибута более быстрым идентификатором + класс. Используйте querySelector для работы с одним элементом над сбором коллекций и индексацией.

Option Explicit
Public Sub TDS_Autofill()
    Dim IE As Object

    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = True
        .Navigate2 "https://onlineservices.tin.egov-nsdl.com/etaxnew/tdsnontds.jsp"

        While .Busy Or .readyState <> 4: DoEvents: Wend

        .document.parentWindow.execScript "sendRequest(281)"

        While .Busy Or .readyState <> 4: DoEvents: Wend

        With .document
            .querySelector("#\30 021").Click
            .querySelector("#\32 00").Click
            .querySelector("[value='94C - Payment of contractors and sub-contractors']").Selected = True
            .querySelector("#div_nature_error .form-control").FireEvent "onchange"
            .querySelector("[value='Axis Bank|https://www.axisbiconnect.co.in/tax/tax.asp']").Selected = True
            .querySelector("#NetBank_Name_c").FireEvent "onchange"
            .querySelector("#div_nature_error .form-control").selectedIndex = 2
            .querySelector(".input-pan").Value = "BPLU00890B"

            With .querySelector("#div_assessment_error .form-control")
                .selectedIndex = 3
                .FireEvent "onchange"
            End With

            .querySelector("#div_add_line1_error .form-control").Value = "83/18"
            .querySelector("#div_add_line2_error .form-control").Value = "Advance College"
            .querySelector("#div_add_line4_error .form-control").Value = "Vishnu Pura"
            .querySelector("#div_add_line5_error .form-control").Value = "Ujjain"

            With .querySelector("#div_state_error .form-control")
                .selectedIndex = 21
                .FireEvent "onchange"
            End With

            .querySelector("#div_pincode_error .form-control").Value = "your_pin"
            .querySelector("#div_email_error .form-control").Value = "your_email@gmail.com"
            .querySelector("#div_mobile_error .form-control").Value = "your_mobile"

            Stop                                 'Enter captcha

            .querySelector("#Submit").Click
            Stop '<== delete me later
        End With
        .Quit
    End With
End Sub
...