如何使用vb.net以编程方式单击javascript显示链接?
我正在尝试为我们的vb.net订单输入系统开发一个新功能。目前,我提供了一个辅助paypal登录,它可以循环处理交易并复制交易。然后,我的程序查看这些数据并将其复制到文本框中。然后操作员批准并保存记录如何使用vb.net以编程方式单击javascript显示链接?,vb.net,Vb.net,我正在尝试为我们的vb.net订单输入系统开发一个新功能。目前,我提供了一个辅助paypal登录,它可以循环处理交易并复制交易。然后,我的程序查看这些数据并将其复制到文本框中。然后操作员批准并保存记录 编辑:我需要在PayPal中查看交易。 因此,我的代码使用IHTMLFormElement并循环表单元素并添加值。然而,我真的只使用这个登录到贝宝。查看我的代码 Dim theObject As Object = Nothing theObject = "https://www.paypal.co
编辑:我需要在PayPal中查看交易。 因此,我的代码使用
IHTMLFormElement
并循环表单元素并添加值。然而,我真的只使用这个登录到贝宝。查看我的代码
Dim theObject As Object = Nothing
theObject = "https://www.paypal.com/cgi-bin/webscr?cmd=_login-run"
WebBrowPayPal.AxWebBrowser1.Navigate2(theObject)
While WebBrowPayPal.AxWebBrowser1.ReadyState <>
tagREADYSTATE.READYSTATE_COMPLETE
Application.DoEvents()
End While
Dim HtmlDoc As IHTMLDocument2 = CType(WebBrowPayPal.AxWebBrowser1.Document,
IHTMLDocument2)
Dim FormCol As IHTMLElementCollection = HtmlDoc.forms
Dim iForms As Integer = FormCol.length
Dim i As Integer
Dim x As Integer
For i = 0 To iForms - 1
Dim oForm As IHTMLFormElement = CType(FormCol.item(CType(i, Object),
CType(i, Object)), IHTMLFormElement)
For x = 0 To oForm.length - 1
If oForm.elements(x).tagname = "INPUT" Then
If oForm.elements(x).name = "login_email" Then
oForm.elements(x).value = "PayPal@mydomain.com"
End If
If oForm.elements(x).name = "login_password" Then
oForm.elements(x).value = "mypassword"
End If
If oForm.elements(x).type = "submit" Or _
oForm.elements(x).type = "SUBMIT" Then
oForm.elements(x).click()
End If
End If
Next
Next i
Dim theObject As Object=Nothing
对象=”https://www.paypal.com/cgi-bin/webscr?cmd=_login-跑”
WebBrowPayPal.AxWebBrowser1.Navigate2(对象)
而WebBrowPayPal.AxWebBrowser1.ReadyState
tagREADYSTATE.READYSTATE\u完成
Application.DoEvents()
结束时
按IHTMLDocument2=CType(WebBrowPayPal.AxWebBrowser1.Document、,
IHTMLDocument2)
Dim FormCol作为IHTMLElementCollection=HtmlDoc.forms
将iForms设置为整数=FormCol.length
作为整数的Dim i
作为整数的Dim x
对于i=0到iForms-1
形式尺寸为IHTMLFormElement=CType,
CType(i,对象)),IHTMLFormElement)
对于x=0到形式长度-1
如果是form.elements(x).tagname=“INPUT”,则
如果是form.elements(x).name=“login\u email”,则
of form.elements(x).value=”PayPal@mydomain.com"
如果结束
如果是form.elements(x).name=“login\u password”,则
oForm.elements(x).value=“mypassword”
如果结束
如果是表单元素(x),则键入=“提交”或_
of form.elements(x).type=“SUBMIT”然后
of form.elements(x).单击()
如果结束
如果结束
下一个
接下来我
我现在正在尝试这个页面
这是历史页面,允许您搜索paypal交易id。
不幸的是,您需要单击“查找事务”,然后使用一些javascript显示post字段。所以问题是我需要使用的字段是隐藏的
如何在代码中单击此javascript链接?我不确定这是否有帮助,但您可能希望尝试直接使用
IHTMLDocument2执行脚本(当您单击“查找事务”时会触发该脚本)。write
方法:
Dim HtmlDoc As IHTMLDocument2 = CType(WebBrowPayPal.AxWebBrowser1.Document,
IHTMLDocument2)
HtmlDoc.write("<script>[Search button event handler]</script>")
如果需要单击链接,只需将HTMLInputElement
更改为htmlinkElement
(在声明和强制转换操作中)
我想您没有使用WinForms,但如果您这样做,我建议您切换到WinForms
希望这对你有帮助
--Pavel你不使用Paypal API有什么原因吗?@Jules-你真的应该使用Paypal API。我需要查看Paypal中的交易!我不确定这是否有效,也不确定搜索按钮处理程序是什么。@Jules:对不起,我没有有效的PayPal帐户,所以我无法重现您的问题。但我希望我的回答为你们指明了正确的方向。
Imports mshtml
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim clicked As Boolean = False
Dim doc As IHTMLDocument2 = Nothing
Dim form As IHTMLFormElement = Nothing
Dim input As HTMLInputElement = Nothing
Dim forms As IHTMLElementCollection = Nothing
AxWebBrowser1.Navigate2("http://www.google.com")
While AxWebBrowser1.ReadyState <> SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE
Application.DoEvents()
End While
doc = CType(AxWebBrowser1.Document, IHTMLDocument2)
For i As Integer = 0 To doc.forms.length - 1
form = CType(doc.forms.item(i, i), IHTMLFormElement)
For j As Integer = 0 To form.length - 1
If TypeOf (form.elements(j)) Is HTMLInputElement Then
input = CType(form.elements(j), HTMLInputElement)
If String.Compare(input.name, "btnI", StringComparison.InvariantCultureIgnoreCase) = 0 Then
input.click()
clicked = True
Exit For
End If
End If
Next
If clicked Then
Exit For
End If
Next
End Sub
End Class