Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
25th
Мар
TChromium обработка клика
Posted by obzor under Delphi
Подскажите как можно отследить нажатие кнопки или элемента на сайте?
Допустим есть кнопка <button id=»777″>test</button>
В самом браузере кликаем на кнопку и получаем сообщение от Делфи.
В теории можно сделать так:
1. На необходимый элемент повесить Event Listener когда ваша страница уже загружена, например в OnLoadEnd, и по его выполнению например выводить сообщение в консоль:
procedure Tfrmmain.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
begin
frame.ExecuteJavaScript(
'document.getElementById("777").addEventListener("click", function() { ' +
' console.log("button_777_clicked"); });', '', 0);
end;
В оригинальном CEF3 есть событие onQuery, но в CEF4Delphi не реализованно (как и в DCEF3), поэтому через консоль проще и быстрее.
2. Ждать и читать нужное сообщение в консоли (OnConsoleMessage):
procedure Tfrmmain.Chromium1ConsoleMessage(Sender: TObject;
const browser: ICefBrowser; level: Cardinal; const message, source: ustring;
line: Integer; out Result: Boolean);
begin
if message='button_777_clicked' then
begin
//ваш код на нажатие
ShowMessage('Button "777" click!');
end;
end;
3. Наслаждаться результатом
Ещё как вариант можно поднять сервер и слать на него запросы из EventListener:
document.getElementById("777").addEventListener("click", function() {
const request = new XMLHttpRequest();
request.open("POST", "127.0.0.1:9090", true);
request.setRequestHeader("Content-Type", "text/plain");
request.send("777");
}
Или не поднимать, а искать и обрабатывать специфичный запрос. И тд и тп
Использовать Selenium. Но можно ли его использовать на Delphi не знаю. На C# очень просто и примеров на офсайте полно.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)