Клик по HTML-элементу
Это самый частый способ. Сначала находим элемент, потом кликаем.
he.Click() — простой клик без эмуляции мыши. Браузер просто получает событие click. Быстро, но сайт может заподозрить бота.
// Находим кнопку по атрибуту и кликаем
HtmlElement he = instance.ActiveTab.FindElementById("submitBtn");
if (!he.IsVoid)
{
he.Click();
project.SendInfoToLog("Клик выполнен");
}
else
{
project.SendInfoToLog("Элемент не найден");
}he.RiseEvent("click", "Full") — более человечный клик. Эмулирует наведение мыши, mouseover, focus и другие события перед кликом. Лучше для защищённых сайтов.
EmulationLevel
"None"— только само событие, без лишнего"Middle"— стандартный набор событий"Full"— полная эмуляция, как живая мышь
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "innertext", "Войти", "text", 0);
if (!he.IsVoid)
{
he.RiseEvent("click", "Full");
instance.ActiveTab.WaitDownloading();
project.SendInfoToLog("Перешли по ссылке");
}Когда что использовать:
Click()— я не использую - на ваш страх и рискRiseEvent("click", "Full")— для обычных кликов
Типичные ошибки новичков
1. Клик до загрузки страницы
// Неправильно — страница может не загрузиться
instance.ActiveTab.Navigate("https://example.com", "");
HtmlElement he = instance.ActiveTab.FindElementById("btn"); // элемент ещё не существует!
// Правильно — ждём загрузки
instance.ActiveTab.Navigate("https://example.com", "");
instance.ActiveTab.WaitDownloading();
HtmlElement he = instance.ActiveTab.FindElementById("btn");2. Клик без проверки на IsVoid
// Неправильно — упадёт с ошибкой если элемент не найден
HtmlElement he = instance.ActiveTab.FindElementById("btn");
he.Click(); // NullReferenceException если he.IsVoid == true
// Правильно
HtmlElement he = instance.ActiveTab.FindElementById("btn");
if (!he.IsVoid)
{
he.Click();
}