delphi 获取元素相对屏幕的位置

由于需要点击验证码刷新,所以需要获取其相对屏幕的位置,代码如下:

var
doc:IHTMLDocument3;
ele2:IHTMLElement2;
p:TPoint;
begin
 doc:=WebBrowser1.Document as IHTMLDocument3;
 ele2:=doc.getElementById('captchaImg') as IHTMLElement2;这里元素类型也是很重要的
 p.X:=ele2.getBoundingClientRect.left+20; //获取相对于浏览器的坐标
 p.Y:=ele2.getBoundingClientRect.top+15;
 p:=WebBrowser1.ClientToScreen(p);//转化为相对屏幕的坐标
 SetCursorPos(p.X,p.Y);聚焦并点击
 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;

Delphi中使用EdgeBrowser组件可以方便地获取网页上的元素。要获取元素,需要先声明一个TEdgeBrowser组件,并为其分配一个OnDocumentComplete事件处理程序。在OnDocumentComplete事件处理程序中,可以使用执行JavaScript的方式获取元素。 首先,可以使用EdgeBrowser的ExecScript方法执行JavaScript代码。通过传入document.getElementById("elementId"),可以获取指定id的元素。例如,下面的代码获取id为"myElement"的元素: procedure TForm1.EdgeBrowser1DocumentComplete(ASender: TObject; const aHTMLDoc: IDispatch); var element: IDispatch; elementId: string; begin elementId := 'myElement'; // 要获取元素的id element := EdgeBrowser1.ExecScript('document.getElementById("' + elementId + '")'); // 检查element是否为空 if not VarIsNull(element) then begin // 获取元素的属性或执行其他操作 // ... end; end; 除了使用getElementById方法,还可以使用其他JavaScript的DOM操作来获取元素,例如getElementsByClassName、getElementsByTagName等。 通过执行JavaScript代码获取元素后,可以进一步操作元素,例如设置元素的属性、获取元素的文本内容等。可以通过调用element的属性或方法来实现。例如,要设置元素的内容,可以使用element.innerHTML := '新内容'。要获取元素的文本内容,可以使用element.innerText。 总之,通过Delphi的EdgeBrowser组件以及JavaScript与Delphi之间的互操作,我们可以方便地获取网页上的元素,并进行对应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值