我试图在.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()”继续搜索,直到获得正确的元素???
感谢。
答案 0 :(得分:0)
由于我无法对你的问题发表评论,我会去做一个“回答”,即使它不是很多...
如果您要发布为什么链接中的解决方案无法正常工作的原因,那么可以更轻松来为您解决问题。
答案 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
我无法相信没有更简单的方法: - (