как выполнить JavaScript в Дельфи?

Я кодирую небольшое приложение, в середине я ударил в какой-то момент, где я должен выполнить JavaScript для получения моих данных?

в моем процессе я должен войти в некоторый URL и затем перейти к некоторой странице и иметь для получения данных из этого. я сделанный все это с инди idhttp, я получил всю информацию кроме одного столбца, которому нужен JavaScript для получения значения, затем я пытался использовать twebbowser, чтобы заставить его работать на меня, но как я могу использовать cookie для включенного к webbrowser?

я переместился по browserto ('пользователь http://mysite.com/login.php и передача'), хорошо ее зарегистрированное, и затем я пытался получить доступ к следующей ссылке как ('http://mysite.com/link1/example.php'), но это направляющий к странице входа в систему :(

любая справка ценится :)

7
задан Leo 28 March 2010 в 16:16
поделиться

2 ответа

Лучше всего автоматизировать сам IE. Возьмите копию embeddedwb , откройте форму и перейдите к URL-адресу, по которому вам нужно что-то выполнить. У компонента есть свойство документа, которое возвращает вариант OLEVariant, используйте его для выполнения оператора стиля DHTML… что-то вроде document.form.submit; .

Вы можете легко скрыть окно, используемое для автоматизации. Один из тех приемов, которые я использовал, - это разместить его на новой странице в элементе управления страницей, добавить вторую страницу для отображения статуса, затем показать страницу статуса и скрыть вкладки.

2
ответ дан 7 December 2019 в 03:13
поделиться

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

7
ответ дан 7 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: