如何单击按钮类 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?

如何单击 webbrowser 控件中的按钮?

C#如何通过WebBrowser自动单击按钮

delphi中的webbrowser ,如何获取网站返回状态码

如何使用 WebBrowser 控件模拟鼠标单击

Delphi 获得Webbrowser弹出对话框的信息