【问题标题】:How do I pause my code until CAPTCHA is entered?如何在输入验证码之前暂停我的代码?
【发布时间】:2020-02-18 11:35:15
【问题描述】:

我已经设法编译了下面提到的代码,代码工作正常,但我需要暂停代码运行,直到我输入验证码值并单击继续按钮。

如何实现?

我还希望在单击继续按钮并加载下一页后继续代码。

我还附上了一张图片供参考。

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.querySelector("#div_nature_error .form-control").FireEvent "onchange"



DOC.getElementById("NetBanking").Click

DOC.getElementById("NetBank_Name_c").Value = ThisWorkbook.Sheets("Challan AutoFill").Range("u2").Value
DOC.querySelector("#NetBank_Name_c").FireEvent "onchange"


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




DOC.querySelector("#Submit").Click





End Sub

【问题讨论】:

  • 这是可能的,但是当您试图实现网站旨在防止的事情时......这是不可取的
  • 不,我只需要暂停代码,直到我自己输入验证码。就是这样。
  • 您可以在一个表单中将 2 个按钮分配给 2 个 UDF。按第一个按钮将您带到输入手机号码的位置。然后输入您需要的内容并按第二个按钮完成该过程

标签: excel vba internet-explorer-11


【解决方案1】:

您可以使用输入框,因为这将暂停代码执行,直到提交答案,并且可以用于输入验证码,而无需单击网站。下面的行应该可以工作:

DOC.getElementsByName("captchaText")(0).Value = InputBox("Captcha:")

如果您在一台显示器上,则需要在一半打开 excel,在另一半打开网站,以便在输入验证码时可以看到验证码是什么。

【讨论】:

  • @ArpitJain 没问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2013-05-19
  • 1970-01-01
相关资源
最近更新 更多