Используется когда страница построена на canvas — игры, графические редакторы, кастомные UI-фреймворки. Там нет DOM-элементов вообще, только пиксели. У вас есть папка с PNG-файлами кнопок, и вы ищете их на экране.
Алгоритм:
- Находим изображение на странице через
tab.FindImage() - Парсим координаты из результата
- Кликаем по центру найденной области
Метод FindImage возвращает строку формата "Left, Top, Width, Height" или пустую строку если не нашёл.
// получаем хэш — DrawToBitmap возвращает строку, это и есть imageHash
HtmlElement he = instance.ActiveTab.FindElementById("myButton");
string imageHash = he.DrawToBitmap(false);
project.SendInfoToLog(imageHash);
// Если это файл
string imageHash = Convert.ToBase64String(File.ReadAllBytes(@"C:\images\button.png"));
// Ищем картинку по всей видимой области
Rectangle[] searchArea = new Rectangle[] { new Rectangle(0, 0, 1280, 900) };
string result = instance.ActiveTab.FindImage(imageHash, searchArea, 95);
if (result != "")
{
// Парсим строку "Left, Top, Width, Height"
string[] parts = result.Split(',');
int left = int.Parse(parts[0].Trim());
int top = int.Parse(parts[1].Trim());
int width = int.Parse(parts[2].Trim());
int height = int.Parse(parts[3].Trim());
// Кликаем в центр найденного изображения
int centerX = left + width / 2;
int centerY = top + height / 2;
instance.ActiveTab.MouseClick(centerX, centerY, "left", "click");
project.SendInfoToLog("Нашли картинку и кликнули: " + result);
}
else
{
project.SendInfoToLog("Картинка не найдена");
}Параметр confidenceInterval (95–99) — процент совпадения при поиске. 95 — допускает небольшие отличия, 99 — почти точное совпадение. Если картинка не находится — попробуйте снизить до 95.