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

Автоматизация клика по кнопке отправки формы в Delphi без указания имени кнопки

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

Вопрос, поднятый пользователем, связан с необходимостью автоматизации клика по кнопке отправки формы на веб-странице, используя компонент WebBrowser в среде разработки Delphi. Особенностью кнопок является то, что у них нет имени (атрибута name), но есть значение (value). Это может быть проблемой для автоматизации, поскольку обычно для идентификации элементов используются именно имена.

Описание задачи

На веб-странице присутствуют три формы, каждая из которых содержит кнопку отправки. Эти кнопки не имеют имен, но имеют различные значения, например, "Login". Необходимо написать код на Object Pascal, который позволит найти кнопку по её значению и выполнить клик по ней.

Решение проблемы

Для решения задачи можно использовать следующий подход. Сначала необходимо получить доступ к элементам формы, а затем перебрать их, ища среди них кнопку с нужным значением. Как только такая кнопка найдена, по ней выполняется клик.

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 = 'Login') then
      ovElements.item(i).Click; // Выполняем клик по найденной кнопке
end;

Дополнительно, для упрощения процесса и возможности переиспользования кода, можно создать функцию, которая будет принимать параметры для тега, типа и значения элемента:

procedure WB_send_Click_by_Value(WB: TWebbrowser; form_nr: NativeInt; tag, typ, val: string);
var
  ovElements: OleVariant;
  i: Integer;
begin
  ovElements := WB.OleObject.Document.forms.item(form_nr).elements;
  for i := 0 to (ovElements.Length - 1) do
    begin
      if AnsiSameText(ovElements.item(i).tagName, tag) and
         AnsiSameText(ovElements.item(i).type, typ) and
         AnsiSameText(ovElements.item(i).value, val) then
        ovElements.item(i).Click;
    end;
end;

Использование этой функции для кнопки в первой форме с значением "ok" будет выглядеть так:

WB_send_Click_by_Value(Webbrowser1, 0, 'input', 'submit', 'ok');

Или для радио кнопки во второй форме с значением "dns":

WB_send_Click_by_Value(Webbrowser1, 1, 'input', 'radio', 'dns');

Заключение

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

Создано по материалам из источника по ссылке.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-04-29 10:43:25/0.0035860538482666/0