как выполнить 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 экземпляр, это все (но вы, вероятно, не хотите чтобы использовать это в любом случае, из-за требования сценария....)