В данной статье мы рассмотрим, как реализовать клик по кнопке внутри элемента TWebBrowser в среде разработки Delphi. Это может быть полезно для автоматизации тестирования веб-интерфейсов или для интеграции веб-компонентов в ваше приложение.
Проблема
Иногда возникает необходимость кликнуть по кнопке на веб-странице, отображаемой в TWebBrowser в приложении на Delphi. Кнопка имеет следующий HTML-код:
Вместо симуляции взаимодействия с пользовательским интерфейром, можно напрямую отправлять запрос на вход. Метод Navigate позволяет это сделать, но если кнопка отправляет POST-запрос, необходимо корректно обработать все данные POST, иначе сервер не примет запрос.
Подтвержденный ответ
Перед тем как приступить к коду, стоит отметить, что нижеприведенный код написан "от руки" и может потребовать дополнительной настройки под вашу конкретную ситуацию. Тем не менее, он должен работать в общем случае.
Использование OleObject
Один из способов доступа к DOM (Document Object Model) интерфейса веб-страницы — использовать OleObject. Вот пример кода на Object Pascal:
var
Buttons: OleVariant;
Button: OleVariant;
I: Integer;
begin
Buttons := WebBrowser1.OleObject.Document.getElementsByTagName("button");
for I := 0 to Buttons.Length - 1 do
begin
Button := Buttons.item(I);
if Button.innerText = 'Sign in' then
begin
Button.click();
Break;
end;
end;
end;
Запуск внешнего скрипта
Другой подход заключается в использовании метода execScript для выполнения JavaScript-кода. Преимущество этого метода в том, что вы можете загрузить кусок JavaScript-кода из внешнего источника, не компилируя весь проект. Вот пример функции на Object Pascal:
uses
MSHTML_TLB, SHDocVw;
procedure ExecuteScript;
var
Script: string;
DocPtr: IHTMLDocument2;
WinPtr: IHTMLWindow3;
begin
Script := 'your_javascript_code'; // Здесь можно также прочитать код из файла
if Supports(WebBrowser1.Document, IHTMLDocument2, DocPtr) and
Supports(DocPtr.parentWindow, IHTMLWindow3, WinPtr) then
WinPtr.execScript(Script, 'javascript');
end;
Заключение
Мы рассмотрели два метода для реализации клика по кнопке внутри TWebBrowser в Delphi: использование интерфейса OleObject для доступа к DOM и запуск внешнего JavaScript-кода через метод execScript. Эти методы могут быть полезны при автоматизации тестирования или интеграции веб-компонентов в ваше приложение на Delphi.
Обратите внимание, что в реальных условиях разработки может потребоваться дополнительная обработка исключений и проверка состояния веб-страницы перед выполнением клика.
В статье рассматривается, как реализовать клик по кнопке на веб-странице, отображаемой в `TWebBrowser` в Delphi, с использованием разных методов, включая OleObject и выполнение JavaScript-кода.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS