Я кодирую небольшое приложение, в середине я ударил в какой-то момент, где я должен выполнить JavaScript для получения моих данных?
в моем процессе я должен войти в некоторый URL и затем перейти к некоторой странице и иметь для получения данных из этого. я сделанный все это с инди idhttp, я получил всю информацию кроме одного столбца, которому нужен JavaScript для получения значения, затем я пытался использовать twebbowser, чтобы заставить его работать на меня, но как я могу использовать cookie для включенного к webbrowser?
я переместился по browserto ('пользователь http://mysite.com/login.php и передача'), хорошо ее зарегистрированное, и затем я пытался получить доступ к следующей ссылке как ('http://mysite.com/link1/example.php'), но это направляющий к странице входа в систему :(
любая справка ценится :)
Лучше всего автоматизировать сам IE. Возьмите копию embeddedwb , откройте форму и перейдите к URL-адресу, по которому вам нужно что-то выполнить. У компонента есть свойство документа, которое возвращает вариант 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
, вот и все (но вы, вероятно, не захотите использовать это в любом случае из-за требований скрипта. ...)