我用的是 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 方法怎么用 请 高手指点,本人挺菜的,最好给出点示例代码 高分奉上
写的太乱了,webbrowser中的页面是你自己的吗,如果是的话,完全可以通过C#和js交互来实现你说的功能,如果页面不是你自己的,那估计不好弄吧。
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的项目,一直找不到控件的位置,找了好几天在国外网站找到的。
好评 可以用的办法!
这个递归想法真牛
不错
不错,从其他网站找过来的。因为网页有Frame,而我已经能够找到网页元素,用这个找位置还是比较简单些。
但在多Frames情况下,需要加上Frames的偏移量。
但在多Frames情况下,需要加上Frames的偏移量:
pos.X += el.document.window.position.x
pos.Y += el.document.window.position.y