Опишу самый простой способ заполнения и отправки формы с использованием компонента TChromium. С доступом к DOM-элементам по id в нем дела обстоят не так хорошо, как в Webbrowser-е, но зато очень просто исполнять любые java-скрипты.
JavaScript может пригодится не только для заполнения форм, он вообще достаточно широко используется.
Исполнение скрипта осуществляется с помощью ExecuteJavaScript. При этом обязательно проверять, чтобы Chromium.Browser и Chromium.Browser.Mainframe были отличны от nil.
Вот как будет выглядеть заполнение и сабмит формы логина на сайте vk.com.
На практике столкнулась с необъяснимой ситуацией: если этот код попробовать запустить в Delphi 7, то Chromium.Browser.Mainframe почему-то будет равен nil (а если проверку убрать, то вываливается ошибка доступа). На каком-то форуме нашла, что это общая проблема для Семерки. В 2010 все работает отлично.
Чтобы быть в курсе обновлений блога, можно подписаться на RSS.
JavaScript может пригодится не только для заполнения форм, он вообще достаточно широко используется.
Исполнение скрипта осуществляется с помощью ExecuteJavaScript. При этом обязательно проверять, чтобы Chromium.Browser и Chromium.Browser.Mainframe были отличны от nil.
Вот как будет выглядеть заполнение и сабмит формы логина на сайте vk.com.
procedure TfrmMain.btnLoginClick(Sender: TObject); var CodeStr : string; begin if Assigned(Chromium.Browser) and Assigned(Chromium.Browser.Mainframe) then begin CodeStr := 'document.forms[0].quick_email.value="UserEmail";'; Chromium.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0); CodeStr := 'document.forms[0].quick_pass.value="UserPass";'; Chromium.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0); CodeStr := 'document.forms[0].submit();'; Chromium.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0); end; end;
На практике столкнулась с необъяснимой ситуацией: если этот код попробовать запустить в Delphi 7, то Chromium.Browser.Mainframe почему-то будет равен nil (а если проверку убрать, то вываливается ошибка доступа). На каком-то форуме нашла, что это общая проблема для Семерки. В 2010 все работает отлично.
Чтобы быть в курсе обновлений блога, можно подписаться на RSS.