delphi中用webbrowser 点击网页中的按钮问题! 10
公司有个签到网页,如图,此按钮的网页源码是:<atitle="点击签到"class="bg_checkinqdbutton"onclick="ygqd()"href="j...
公司有个签到网页,如图
,此按钮的网页源码是:<a title="点击签到" class="bg_checkin qdbutton" onclick="ygqd()" href="javascript:void(0);"/>
想用delphi做个签到的小软件,一般是利用webbrowser控件,通过查找按钮的名称、标签等来模拟点击,但是此按钮的源码,不知道怎么模拟点击?请高手赐教! 展开
,此按钮的网页源码是:<a title="点击签到" class="bg_checkin qdbutton" onclick="ygqd()" href="javascript:void(0);"/>
想用delphi做个签到的小软件,一般是利用webbrowser控件,通过查找按钮的名称、标签等来模拟点击,但是此按钮的源码,不知道怎么模拟点击?请高手赐教! 展开
4个回答
展开全部
两种方法,一种调用 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 的单击事件
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 的单击事件
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将onclick="ygqd()" 中的function ygqd()定义搞清楚,看看能否直接使用一个签到的简单链接;不行的话,让Webbrowser直接执行ygqd函数也应该是可行的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两种方法
1 直接调用这个js事件
2 签到的时候抓包,分析包,然后直接用delphi发包
1 直接调用这个js事件
2 签到的时候抓包,分析包,然后直接用delphi发包
追问
可否列出源代码?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询