模拟链接单击webbrowser控件vb.net

时间:2013-07-29 10:13:15

标签: vb.net webbrowser-control raiseevent invokemember

我正在尝试让我的应用程序单击网页浏览器控件中加载的页面内的链接,但似乎没有发生任何事情。在链接上手动单击工作(它执行一些javascript命令以使用ajax加载数据)。我不能简单地转到URL,因为HREF是“#”

到目前为止,我尝试过这些方法:

wb.Document.GetElementById("MyElement").InvokeMember("click") wb.Document.GetElementById("MyElement").RaiseEvent("onmousedown") wb.Document.GetElementById("MyElement").RaiseEvent("onclick")

不确定它是否会有所帮助,但是: wb.Document.GetElementById("MyElement").RaiseEvent("onmouseover") 似乎在链接上部分模拟鼠标悬停

我可以尝试模拟鼠标点击的其他选项吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

我有同样的问题。什么都行不通; RaiseEvent,Document.GetElementById(oLink.Id).InvokeMember(" click")等。

最后,我通过循环遍历Document.Links HTMLElementCollection找到了链接。然后做了一个link.Focus,和一个愚蠢的SendKeys.Send(" {ENTER}")。这有效!见下文:

        Dim bFound As Boolean = False
        Dim oLink As HtmlElement = Nothing

        For Each oLink In wbExample.Document.Links
            If oLink.InnerText IsNot Nothing _
            AndAlso oLink.InnerText.ToString.Trim = "12345" Then
                bFound = True
                Exit For
            End If
        Next

        If bFound = False Then
            Throw New Exception("Big time lameness; can't find the link.")
        End If

        oLink.Focus()
        SendKeys.Send("{ENTER}")

答案 1 :(得分:0)

我有同样的问题......这很有效。

For Each Mylink As HtmlElement In WebBrowser1.Document.Links
    If Mylink.InnerText.Contains("SomeTextToSearchFor") Then
        WebBrowser1.Navigate(Mylink.GetAttribute("href"))
    End If
Next

答案 2 :(得分:0)

首先,这是我在任何网站上提交的问题的第一个回答帖子。 我有同样的问题,并根据之前的帖子提出了以下帖子,至少在我的情况下工作并避免使用sendkeys:

Dim oLink As HtmlElement = Nothing

For Each oLink In WebBrowser1.Document.Links
    If oLink.InnerText IsNot Nothing _
       AndAlso oLink.InnerText.ToString.Trim = "TextToSearchFor" Then
        oLink.InvokeMember("click")
        Exit For
    End If
Next

如果我尝试访问的链接有一个与之关联的ID,我认为解决方案会更简单,不需要循环,但由于它没有,它就是它的本质。希望这有助于其他人。