0

我试图让我的应用程序单击 Web 浏览器控件中加载的页面内的链接,但似乎没有发生任何事情。手动单击链接有效(它执行一些 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") 似乎部分模拟了链接上的鼠标悬停

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

谢谢!

4

3 回答 3

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}")
于 2014-04-03T02:06:25.503 回答
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,我认为解决方案会更简单,不需要循环,但既然没有,那就是它。希望这对其他人有帮助。

于 2016-06-29T13:53:43.927 回答
0

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

For Each Mylink As HtmlElement In WebBrowser1.Document.Links
    If Mylink.InnerText.Contains("SomeTextToSearchFor") Then
        WebBrowser1.Navigate(Mylink.GetAttribute("href"))
    End If
Next
于 2015-10-28T17:39:53.893 回答