[英]c# / vb.net webbrowser get htmlelement position
我试图在.net的webbrowser控件中获取html元素的位置,但失败了,我需要相对于整个文档或webbrowser控件的元素的确切位置,才能使用SendMessage()P / Invoke发送鼠标单击..
我从这里尝试过解决方案,但没有成功: 使用C#在webbrowser控件中获取HTML元素的绝对位置
我猜这是因为页面依赖于非常复杂的Ajax和CSS。
函数“ WebBrowser1.Document.GetElementFromPoint()”在获取准确的html元素时效果很好,我只需要相反的内容即可。
否则,我应该继续使用“ GetElementFromPoint()”进行搜索,直到获得正确的元素为止?
谢谢。
由于我无法评论您的问题,因此我将提出一个“答案”,即使该答案不会太多。
如果您要发布链接中的解决方案无法正常工作的原因,那么可以
更轻松
地为您提供解决方案。
您只需执行以下操作即可获得相同的确切行为:
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);
}
我有这个完全相同的问题。 调用,.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
我不敢相信没有比这更简单的方法了:-(
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.