我正在尝试让我的应用程序单击网页浏览器控件中加载的页面内的链接,但似乎没有发生任何事情。在链接上手动单击工作(它执行一些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")
似乎在链接上部分模拟鼠标悬停
我可以尝试模拟鼠标点击的其他选项吗?
谢谢!
答案 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,我认为解决方案会更简单,不需要循环,但由于它没有,它就是它的本质。希望这有助于其他人。