如何在Delphi上的TWebBrowser中单击此按钮
<button class="btn btn-primary btn-block" type="button" onclick="login()">Sign in</button>
答案 0 :(得分:1)
我现在没有Delphi编译器。代码是使用脑编译器编写的。但它应该可以正常工作。
您可以使用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;