繁体   English   中英

C#/ vb.net Webbrowser获取htmlelement位置

[英]c# / vb.net webbrowser get htmlelement position

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

我从这里尝试过解决方案,但没有成功: 使用C#在webbrowser控件中获取HTML元素的绝对位置

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

函数“ WebBrowser1.Document.GetElementFromPoint()”在获取准确的html元素时效果很好,我只需要相反的内容即可。

否则,我应该继续使用“ GetElementFromPoint()”进行搜索,直到获得正确的元素为止?

谢谢。

由于我无法评论您的问题,因此我将提出一个“答案”,即使该答案不会太多。

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

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

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM