繁体   English   中英

vb.net单击一个javascript按钮

[英]vb.net click a javascript button

我有一个vb.net Windows表格。 在表单中,我正在运行Web浏览器控件。 我试图使用VB代码单击一个按钮。 我发现了直接调用js函数的示例,但是我没有任何运气。 如何在VB上单击js按钮

该按钮的html是-

<input class="boldbutton" type="button" value="Verify"
   onclick="this.form.knob.value='ReqVerify';this.form.verify.value=1;this.form.submit()">

我的vb代码是-

WebBrowser1.Document.InvokeScript(
    "this.form.knob.value='ReqVerify';this.form.verify.value=1;this.form.submit()"
)

我不确定我要去哪里错。 按下提交按钮后,网页上会显示一条日志,显示活动。 仅当我从另一浏览器(而不是Windows窗体中的浏览器)手动按下按钮时,运行脚本时我没有看到任何活动。

你的问题是,你的vb.net的javascript调用有没有参考点this 当您单击Web浏览器的按钮, this指的是按钮。

当您调用WebBrowser1.Document.InvokeScript this是指全局的东西,也许是窗口?

无论哪种方式,您都可以调用按钮单击。 为此,请向按钮添加一个ID,例如btnSubmit 然后做:

Dim search As HtmlElement = webBrowser1.Document.GetElementById("btnSubmit")     
If search IsNot Nothing Then        
      For Each ele as HtmlElement in search.Parent.Children
          If ele.TagName.ToLower() = "input" AndAlso ele.Id.ToLower() = "btnSubmit" Then                
              ele.InvokeMember("click")
              Exit For
          End If
      Next
  End If

摘自(c#): https//stackoverflow.com/a/5227644/1160796

另一个选择是修复您的JavaScript代码。 通过将this.form更改为表单的ID来实现。 同样,如果没有id,则设置一个,例如frmMain 然后做:

WebBrowser1.Document.InvokeScript("frmMain.knob.value='ReqVerify';frmMain.verify.value=1;frmMain.submit()")

如果您无权更改网站资源,请使用document.forms 假设这是唯一的形式:

WebBrowser1.Document.InvokeScript("document.forms(0).knob.value='ReqVerify';document.forms(0).verify.value=1;document.forms(0).submit()")

导入系统导入System.Data导入System.Data.OleDb

作为新OleDbConnection(“ Provider = Microsoft.ACE.OLEDB.12.0; Data Source = | DataDirectory | \\ VulnScanData.accdb;公共安全信息= True; Jet OLEDB:Database Password = ******* *****“)

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'opens connection to database
    con.Open()
    WebBrowser1.Navigate("https://fs-enterprise.my.private.url/")
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtnLogin.Click
    WebBrowser1.Document.GetElementById("name").SetAttribute("value", TextBox1.Text)
    WebBrowser1.Document.GetElementById("password").SetAttribute("value", TextBox2.Text)
    WebBrowser1.Document.GetElementById("Logon").InvokeMember("click")
End Sub

Private Sub BtnQuery_Click(sender As Object, e As EventArgs) Handles BtnQuery.Click
    'open transaction object
    Dim trans As OleDb.OleDbTransaction
    trans = con.BeginTransaction
    'define the command which allows you to read, write or update the db
    Dim cmd As New OleDb.OleDbCommand
    'define the query        
    cmd.CommandText = "SELECT [Ticket ID] AS Ticket_ID FROM [Table_Main] WHERE ([Ticket Days OverDue] >= 1)"
    'assign the connection
    cmd.Connection = con
    'assign the transaction
    cmd.Transaction = trans
    'execte the command
    Dim myreader As OleDb.OleDbDataReader
    myreader = cmd.ExecuteReader
    Do While myreader.Read
        MsgBox(myreader.Item("Ticket_ID"))
        Dim result As String = myreader.Item("Ticket_ID")
        WebBrowser1.Navigate("https://fs-enterprise.my.private.url/remediation/ticket.exp?ticket=" & result)
        Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
            Application.DoEvents()
        Loop
        '<input class="boldbutton" type="button" value="Verify" onclick="this.form.knob.value='ReqVerify';this.form.verify.value=1;this.form.submit()"></td>
        'WebBrowser1.Document.InvokeScript("document.forms(0).knob.value='ReqVerify';document.forms(0).verify.value=1;document.forms(0).submit()")
        WebBrowser1.Document.InvokeScript("this.form.knob.value='ReqVerify';this.form.verify.value=1;this.form.submit()")
        MessageBox.Show("Submitting Ticket")
    Loop
    myreader.Close()
    con.Close()
End Sub

末级

我能够使它工作。 这是我的代码

For Each el As HtmlElement In WebBrowser1.Document.GetElementsByTagName("INPUT")
            If (el.GetAttribute("value").Equals("Verify")) Then
                el.InvokeMember("click")
            End If
        Next

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM