首页 新闻 搜索 专区 学院

C#如何获得webbrowser网页里某元素所占用的位置坐标

0
悬赏园豆:40 [已关闭问题] 关闭于 2013-06-05 21:46

我用的是 C# 想模拟鼠标点击 webbrowser中某html元素 首先需要找到相应的位置
不要跟我介绍如:
 

           document.All["subbtn"].RaiseEvent("onClick");       
            document.All["subbtn"].InvokeMember("submit");  

 

我用的是 C# 想模拟鼠标点击 webbrowser中某html元素 首先需要找到相应的位置
不要跟我介绍如:

C# code            document.All["subbtn"].RaiseEvent("onClick");      
            document.All["subbtn"].InvokeMember("submit"); 


试过了 不好使 至少在一些网页上是不好使的!

我读到了一篇帖子: http://topic.csdn.net/u/20110108/17/572d67a9-729d-4f66-9242-3e1ee63caa04.html
上边说 在VB中可以用:如下 方式:
元素相对于什么的坐标?
相对于Webbrowser?Webbrowser的父容器?还是屏幕?
不管什么坐标,首先要取得元素(HtmlElement)在父容器(HtmlWindow或Frame)中的位置,暂时不考虑Frame/Iframe容器的情况,那种比较复杂。
首先用HtmlElment2的getBoundingClientRect方法可以得到元素的矩形(Rect),这就得到了元素在Webbrowser的位置。
再用ClienttoServer,可以将它在Webbrowser中的位置分别转换成元素在容器和在屏幕的位置。只是这一步你需要用一点特殊的办法得到Webbrowser的句柄。  

=============================

 我研究了半天 也没弄明白 getBoundingClientRect 方法怎么用 请 高手指点,本人挺菜的,最好给出点示例代码  高分奉上

 

钢的锅的主页 钢的锅 | 初学一级 | 园豆:14
提问于:2012-10-31 22:02
< >
分享
所有回答(4)
0

写的太乱了,webbrowser中的页面是你自己的吗,如果是的话,完全可以通过C#和js交互来实现你说的功能,如果页面不是你自己的,那估计不好弄吧。

for certain | 园豆:324 (菜鸟二级) | 2012-11-01 15:08
0
public Point GetOffset(HtmlElement el)
{
    //get element pos
    Point pos = new Point(el.OffsetRectangle.Left, el.OffsetRectangle.Top);

    //get the parents pos
    HtmlElement tempEl = el.OffsetParent;
    while (tempEl != null)
    {
        pos.X += tempEl.OffsetRectangle.Left;
        pos.Y += tempEl.OffsetRectangle.Top;
        tempEl = tempEl.OffsetParent;
    }

    return pos;
}

var point = GetOffset(element);
var x = point.X;
var y = point.Y;

给我加分吧,我测试可以的,也在做webbrowser的项目,一直找不到控件的位置,找了好几天在国外网站找到的。

silly728 | 园豆:202 (菜鸟二级) | 2014-01-21 10:21

好评 可以用的办法!

支持(0) 反对(0) 张静茹 | 园豆:162 (初学一级) | 2015-04-05 06:49

这个递归想法真牛

支持(0) 反对(0) 八八。 | 园豆:139 (初学一级) | 2016-03-04 17:18
0

不错

DreamOnTheGo | 园豆:186 (初学一级) | 2016-09-05 21:56
0

不错,从其他网站找过来的。因为网页有Frame,而我已经能够找到网页元素,用这个找位置还是比较简单些。

zs李四 | 园豆:204 (菜鸟二级) | 2016-10-12 11:45

但在多Frames情况下,需要加上Frames的偏移量。

支持(0) 反对(0) zs李四 | 园豆:204 (菜鸟二级) | 2016-10-12 17:11

但在多Frames情况下,需要加上Frames的偏移量:

pos.X += el.document.window.position.x

pos.Y += el.document.window.position.y

支持(0) 反对(0) zs李四 | 园豆:204 (菜鸟二级) | 2016-10-21 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册