Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Нажать определенную кнопку на форме в TWebBrowser

Delphi , Интернет и Сети , Браузер

Нажать определенную кнопку на форме в TWebBrowser

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

// If there is only one button, you can do something like: 

WebBrowser1.OleObject.Document.forms.item(0).elements.item(0).click;

 // This will do a click on the first element of the first <FORM>, where an 
// element is either <INPUT>, <SELECT> or <TEXTAREA>. 


// If there is more than one button, you can do something like: 

procedure TForm1.Button1Click(Sender: TObject);
 var
    ovElements: OleVariant;
    i: Integer;
  begin
    ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
    for i := 0 to (ovElements.Length - 1) do
     if (ovElements.item(i).tagName = 'INPUT') and
       (ovElements.item(i).type = 'SUBMIT') and
       (ovElements.item(i).Value = 'Recent Charges') then
       ovElements.item(i).Click;
  end;

Программный код, предоставленный вами, используется для имитации клика по конкретной кнопке в форме в компоненте TWebBrowser в Delphi. Вот подробное описание, как работает этот код:

  1. Первая часть кода демонстрирует, как кликать по первому элементу первого <FORM>:
WebBrowser1.OleObject.Document.Forms.Item(0).Elements.Item(0).Click;
  1. Если в форме есть более одной кнопки, можно использовать цикл для поиска и клика нужной кнопки. Это показано во второй части кода.

Вот, как работает этот код:

  • ovElements := WebBrowser1.OleObject.Document.Forms.Item(0).Elements; - эта строка получает все элементы в первой форме.
  • Цикл for проходит по каждому элементу:
for i := 0 to (ovElements.Length - 1) do
  • Внутри цикла проверяется, является ли текущий элемент полем ввода и его типом 'SUBMIT', а также если значение поля равно имени желаемой кнопки ('Recent Charges'):
if (ovElements.Item(i).tagName = 'INPUT') and
   (ovElements.Item(i).type = 'SUBMIT') and
   (ovElements.Item(i).Value = 'Recent Charges') then
   ovElements.Item(i).Click;
  • Если все условия выполняются, имитируется клик по этой кнопке.

Вот альтернативное решение с использованием метода Invoke для получения HTML-элемента и вызова его метода click:

procedure TForm1.Button1Click(Sender: TObject);
var
  doc: IDispatch;
  form: Variant;
  button: OleVariant;
begin
   // Получение объекта документа
  doc := WebBrowser1.OleObject.Document;

   // Получение первой формы
  form := doc.Forms.Item(0);

   // Получение кнопки с именем 'Recent Charges'
  button := form.Elements.ItemByName('Recent Charges');

   // Если найдена, имитируется клик
  if VarType(button) = varDispatch then
     ((button as IHTMLInputElement).click);
end;

Это подход более прямой и avoids использования свойств tagName и type. Он напрямую получает кнопку с желаемым именем и вызывает ее метод click.

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 15:12:22/0.0038719177246094/0