c#/ vb.net webbrowser获取htmlelement位置

时间:2012-04-26 17:11:47

标签: c# javascript vb.net webbrowser-control

我试图在.net的webbrowser控件中获取html元素的位置并失败, 我需要元素相对于整个文档或webbrowser控件的确切位置,以便能够使用SendMessage()P / Invoke发送鼠标单击..

我从这里尝试了解决方案,但它不起作用: getting absolute position of HTML element in webbrowser control with C#

我猜这是因为页面依赖于非常复杂的ajax和css。

函数“WebBrowser1.Document.GetElementFromPoint()”在获取准确的html元素方面效果很好,我只需要与之相反。

另外,我应该继续使用“GetElementFromPoint()”继续搜索,直到获得正确的元素???

感谢。

3 个答案:

答案 0 :(得分:0)

由于我无法对你的问题发表评论,我会去做一个“回答”,即使它不是很多...

  • 通过JavaScript / InvokeMethod点击元素有什么问题?
  • 您还可以修改元素的CSS,使其覆盖 整个视口,允许您单击Web中的任何位置 浏览器控件的视口。

如果您要发布为什么链接中的解决方案无法正常工作的原因,那么可以更轻松来为您解决问题。

答案 1 :(得分:0)

只需执行以下操作即可获得相同的确切行为:

public void ClickHtmlElement(WebBrowser o, string htmlElementId)
{
  const string mask = @"javascript:void(document.getElementById('{0}').click())";
  string url = string.Format(mask, htmlElementId);
  o.Navigate(url);
}

答案 2 :(得分:0)

我有同样的问题。调用,.domelement.click(),。click等...不起作用,sendmessage确实有效,但这需要确切的X,Y位置。

我目前唯一的解决方案是可怕的。基本上使用GetElementFromPoint(),但不是逐点进行,而是可以使用元素宽度和高度的步长。

因此,如果您的元素高500像素,宽500像素,那么您可以搜索0,500,1000,1500等点。

我发现了一些jQuery代码,显示了获取正确的X,Y位置实际上有多复杂:

https://github.com/jquery/jquery/blob/master/src/offset.js

我无法相信没有更简单的方法: - (