如何单击VB上的js按钮

时间:2013-07-15 14:12:35

标签: javascript button click

我正在使用visual basic 12.在我的表单中有一个网页浏览器。我想点击它但我有一个问题。按钮是一个javascript按钮。所以这段代码不起作用:

WebBrowser1.Document.All("button id").InvokeMember("click")

这是按钮的hmtl。如何点击它。

<a class="single_like_button btn3-wrap" onclick="openFbLWin_407311();">
                                        <span>&nbsp;</span><div class="btn3">Like</div></a>

1 个答案:

答案 0 :(得分:1)

三个选项:

  1. 直接执行javascript函数
  2. 使用InnerHTML搜索所有A元素
  3. 使用ClassName
  4. 搜索所有A元素

    直接执行javascript函数

    编辑:感谢pquest指出你可以直接执行javascript函数:

    Browser.InvokeScript("openFbLWin_407311");
    

    更复杂(并非真正必要):

    WbBrowser.Navigate( new Uri("javascript:(function(){ openFbLWin_407311(); })();") )
    

    使用InnerHTML

    搜索所有A元素

    查看以下问题:Click an HTML link inside a WebBrowser Control

    在您的情况下,基于该链接,如下所示:

    Dim links As HtmlElementCollection
    links = WebBrowser1.Document.GetElementsByTagName("A")
    
    For Each link As HtmlElement In links
       If link.InnerHtml.IndexOf("Like") <> -1 Then
                link.InvokeMember("Click")
       End If
    Next
    

    使用ClassName

    搜索所有A元素
     If link.GetAttribute("className") = "single_like_button btn3-wrap" Then
        link.InvokeMember("Click")
     End If
    

    所有三种方法:

    <强> VB.net

    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            WebBrowser1.Url = New Uri("file:///D:/clickJSbutton.html")
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Method 1: Execute javascript directly
             Browser.InvokeScript("openFbLWin_407311");
             'WebBrowser1.Navigate(New Uri("javascript:(function(){ openFbLWin_407311(); })();"))
    
            'Method 2: Find the link from all links
            Dim links As HtmlElementCollection
            links = WebBrowser1.Document.GetElementsByTagName("A")
    
            For Each link As HtmlElement In links
                'Method 2B: Using some kind of inner html
                If link.InnerHtml.IndexOf("Like") <> -1 Then
                    link.InvokeMember("Click")
                End If
    
                'Method 2C: Using className as identifier
                If link.GetAttribute("className") = "single_like_button btn3-wrap" Then
                    link.InvokeMember("Click")
                End If
    
            Next
    
        End Sub
    End Class