delphi中用webbrowser 点击网页中的按钮问题!

2025-01-06 10:08:51
推荐回答(4个)
回答1:

两种方法,一种调用 js脚本
1、
uses
SHDocVw, MSHTML;
procedure ExecuteScript(wb: TWebBrowser; lScript: string);
var
HTDoc: IHTMLDocument2;
begin
try
HTDoc := (wb.Document as IHTMLDocument2);
if (HTDoc <> nil) then
begin
if HTDoc.parentWindow <> nil then
HTDoc.parentWindow.ExecScript(lScript, 'javascript');
end;
except
end;
end;

ExecuteScript(wb, 'ygqd()'); // 调用TWebBrowser中的js函数 ygqd();

2、利用 Document接口调用 bg_checkin qdbutton 的单击事件

回答2:

var
Doc : IHtmlDocument2;
HtmlW : IHtmlWindow2;
begin

Doc :=WebBrowser1.Document as IHtmlDocument2;
if not assigned(Doc) then
exit;
HtmlW:= Doc.parentWindow;
if not assigned(HtmlW) then
exit;

// Run Javascript
try
HtmlW.execScript('ygqd()', 'JavaScript');
except
Showmessage('Call JavaScript failed!');
end;
end;
//直接调用 网页里的ygqd() 函数

另外 一个较为死板的办法
use mshtml;

var
HtmlDoc: IHtmlDocument2;
sHtml: string;
AllLinks : IhtmlElementCollection;
loginItem : IHTMLElement;
begin
HtmlDoc :=WebBrowser1.document as Ihtmldocument2; sHtml:=IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml;
AllLinks := HtmlDoc.links; //获取所有超链接
//假设你要点击的链接是第6个 那就写5 因为第一个是0 。。。
loginItem:= AllLinks.item(5,emptyparam) as IHTMLElement; //点击超链接
loginItem.click

end;

回答3:

将onclick="ygqd()" 中的function ygqd()定义搞清楚,看看能否直接使用一个签到的简单链接;不行的话,让Webbrowser直接执行ygqd函数也应该是可行的。

回答4:

两种方法
1 直接调用这个js事件
2 签到的时候抓包,分析包,然后直接用delphi发包