如何单击按钮类 WebBrowser Delphi
Posted
技术标签:
【中文标题】如何单击按钮类 WebBrowser Delphi【英文标题】:How to click Button Class WebBrowser Delphi 【发布时间】:2014-12-11 12:25:56 【问题描述】:如何在 Delphi 的 TWebBrowser 中点击这个按钮
<button class="btn btn-primary btn-block" type="button" onclick="login()">Sign in</button>
【问题讨论】:
而不是模拟UI交互直接post一个登录请求。Navigate
方法允许你这样做。
@TLama 是的,这是一个解决方案。如果按钮提交的是 POST 表单,则所有的 post 数据都应该被妥善处理,否则服务器不会接受请求。
【参考方案1】:
我现在没有 Delphi 编译器。代码是使用大脑编译器编写的。但它应该可以正常工作。
使用 OleObject
您可以使用oleobject
接口访问DOM。
var
Buttons: OleVariant;
Button: OleVariant;
I: Integer;
begin
Buttons := WebBrowser1.OleObject.Document.getElementsByTagName("button");
for I := 0 to Buttons.Length - 1 do
begin
Button := Buttons.item(I);
if Button.innerText = 'Sign in' then
begin
Button.click();
Break;
end;
end;
end;
运行外部脚本
另一种方法是调用execScript
接口。好处是您可以从外部源加载一大段 javascript 代码,而不是编译整个项目。
uses
MShtml_TLB, SHDocVw;
procedure ExecuteScript;
var
Script: string;
DocPtr: IHTMLDocument2;
WinPtr: IHTMLWindow3;
begin
Script := 'your_javascript_code'; // Alternatively read from file
if Supports(WebBrowser1.Document, IHTMLDocument2, DocPtr) and
Supports(DocPtr.parentWindow, IHTMLWindow3, WinPtr) then
WinPtr.execScript(Script, 'javascript');
end;
【讨论】:
以上是关于如何单击按钮类 WebBrowser Delphi的主要内容,如果未能解决你的问题,请参考以下文章
delphi中WebBrowser控件怎么模拟点击网页框架中的按钮button?