【问题标题】:How to click Button Class WebBrowser Delphi如何单击按钮类 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 数据都应该被妥善处理,否则服务器不会接受请求。

标签: delphi button click twebbrowser submit-button


【解决方案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; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-16
    • 2012-07-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多