【发布时间】:2013-07-29 10:13:15
【问题描述】:
我正在尝试让我的应用程序单击 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")
似乎部分模拟了链接上的鼠标悬停
我可以尝试模拟鼠标点击的任何其他选项吗?
谢谢!
【问题讨论】:
-
您的第一次尝试,只要您的 ID 正确,wb.Document.GetElementById("MyElement").InvokeMember("click") 应该可以工作。发布链接的html
-
是的,应该。但由于某种原因,它没有。 :)
-
必须尝试将链接作为 HtmlElementCollection 获取? Dim links As HtmlElementCollection = wb.Document.GetElementsByTagName("a")... for each link -> link.InvokeMember("click")
-
当我尝试以这种方式声明“链接”时收到此消息:
Unable to cast object of type 'System.Windows.Forms.HtmlElementCollection' to type 'mshtml.HTMLElementCollection'. -
尝试
For Each link In wb.Document.GetElementsByTagName("a")而不声明“链接”对象并绕过错误。但是仍然没有触发点击事件。
标签: vb.net webbrowser-control raiseevent invokemember