TChromium: заполнение и сабмит формы

Прочии темы

Moderator: Aleksandr

Avatar
Topic author
LILUS M
Старшина
Старшина
Posts: 136
With us: 7 years 5 months

TChromium: заполнение и сабмит формы

Post #1by LILUS » 31 Jan 2014, 18:20

Wed, 20 Feb 2013 21:02:00 +0000

Опишу самый простой способ заполнения и отправки формы с использованием компонента TChromium. С доступом к DOM-элементам по id в нем дела обстоят не так хорошо, как в Webbrowser-е, но зато очень просто исполнять любые java-скрипты.

JavaScript может пригодится не только для заполнения форм, он вообще достаточно широко используется.

Исполнение скрипта осуществляется с помощью ExecuteJavaScript. При этом обязательно проверять, чтобы Chromium.Browser и Chromium.Browser.Mainframe были отличны от nil.

Вот как будет выглядеть заполнение и сабмит формы логина на сайте vk.com.

Image

Code: Select all

procedure TfrmMain.btnLoginClick(SenderTObject);
var
  
CodeStr string;
begin
  
if Assigned(Chromium.Browser) and Assigned(Chromium.Browser.Mainframethen
    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 все работает отлично.

! ! !


  • Similar Topics
    Replies
    Views
    Last post

Return to “Прочее”

Who is online

Users browsing this forum: 1 guest