我正在编写一个小应用程序,在中间我发现某些地方,我必须执行javascript来获取我的数据?
在我的过程中,我必须登录到某个网址然后转到某个页面并且必须从中获取数据。我用indy idhttp做了所有这些,除了一个需要javascript才能获得价值的专栏以外我得到了所有信息,然后我尝试使用twebbowser让它适合我,但我怎样才能使用cookies启用webbrowser?
我浏览了browserto('http://mysite.com/login.php用户并通过了'),好了它,然后我尝试访问下一个链接,如('http://mysite.com/link1/example.php'),但它指向登录页面:(< / p>
任何帮助表示赞赏:)
答案 0 :(得分:7)
你现在的问题是什么?在标题中,您将询问如何执行JavaScript。请尝试以下方法:
uses
MSHTML_TLB, SHDocVw, ShellAPI;
function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean;
var
win: IHTMLWindow2;
Olelanguage: Olevariant;
begin
if doc <> nil then
begin
try
win := doc.parentWindow;
if win <> nil then
begin
try
Olelanguage := language;
win.ExecScript(script, Olelanguage);
finally
win := nil;
end;
end;
finally
doc := nil;
end;
end;
end;
样本用法:
IDoc: IHTMLDocument2;
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc);
ExecuteScript(iDoc, 'document.login.submit()', 'JavaScript');
(这可以找到更多here)。
然后在文中你问如何使用 cookies (当使用TWebBrowser时,这应该自动发生)。使用Indy HTTP时,您只需将TIdCookieManager
附加到TIdHTTPClient
实例,就是所有(但由于脚本要求,您可能不想再使用它)。
答案 1 :(得分:2)
您最好的选择是自动化IE本身。抓取embeddedwb的副本,放在表单上,然后导航到您需要执行某些操作的网址。组件的document属性返回一个OLEVariant,使用它来执行DHTML样式语句..类似document.form.submit;
。
您可以轻松隐藏用于自动化的窗口,我使用的一种技术是将其放在页面控件的新页面上,添加第二页以显示状态,然后显示状态页面并隐藏选项卡。