как выполнить javascript в delphi?
Я кодирования небольшое приложение ,в середине я ударил в какой-то момент, когда мне нужно выполнить JavaScript, чтобы получить мои данные ?
в моем процессе я должен войти в какой-то url, а затем перейти на какую-то страницу и получить данные из этого . я сделал все это с indy idhttp, я получил всю информацию, кроме одного столбца, который нуждается в javascript для получения значения ,затем я попытался использовать twebbowser, чтобы заставить его работать для меня, но как я могу использовать cookies для включения webbrowser ?
я плавал browserto('http://mysite.com/login.php User и Pass ') ,также вошедших в и тогда я пытался получить доступ к следующей ссылке как ('http://mysite.com/link1/example.php'), но направляет на страницу входа в систему :(
любая помощь приветствуется :)
2 ответов
лучше всего было бы автоматизировать сам IE. Возьмите копию embeddedwb, падение на форму и перейдите к url, который вам нужно выполнить что-то. Существует свойство document компонента, который возвращает OLEVariant, используйте это для выполнения инструкции стиля DHTML.. что-то вроде document.form.submit;
.
вы можете легко скрыть окно, используемое для автоматизации, один из методов, которые я использовал, чтобы разместить его на новой странице на странице элемента управления, добавить вторую страницу для отображения состояние, затем показать страницу состояния и скрыть вкладки.
в чем ваш вопрос? В заголовке вы спрашиваете, Как выполнить 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');
(это и многое другое можно найти здесь).
затем в тексте вы спрашиваете, как использовать печенье (при использовании TWebBrowser это должно произойти автоматически). При использовании Indy HTTP вам просто нужно прикрепить TIdCookieManager
на TIdHTTPClient
экземпляр, это все (но вы, вероятно, не хотите чтобы использовать это в любом случае, из-за требования сценария....)