Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


Выделение элемента при наведении мышкой в WebBrowser

Из этой статьи вы узнаете, как выделить элемент в WebBrowser при наведении мышкой.

Как обычно начнём с создания нового проекта типа Windows Forms Application. Затем добавим на форму элемент управления WebBrowser (wb).

control webBrowser

 

Для работы нам так же понадобиться тестовая страница, её исходник я возьму из предыдущей статьи: Получение имени элемента при наведении мышкой.

И так для начала нужно загрузить страницу в WebBrowser. В данном примере это действие я буду выполнять в обработчике события Form.Load

private void Form1_Load(object sender, EventArgs e)
{
wb.Navigate("адрес сайта");
}

Затем необходимо дождаться полной загрузки страницы, для этого подписываемся на событие DocumentCompleted.

private void wb_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
}

Следующим шагом будет подписка на событие MouseOver, которое позволит отловить момент наведения мышки на элемент.

private voidwb_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
wb.Document.MouseOver +=
new HtmlElementEventHandler(Document_MouseOver);
}
void Document_MouseOver(object sender, HtmlElementEventArgs e)
{
throw new NotImplementedException();
}

Выделение элемента

Выделить элемент на странице можно несколькими способами, так например, в данной статье рассмотрим, как это можно сделать с помощью css стилей.


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


1. Чтобы применить css стиль к элементу нужно воспользоваться свойством Style. Например, я хочу, чтобы при наведении мышки на элемент вокруг него создавалась рамка красного цвета:

e.ToElement.Style = "border:2px solid red;";

результат

рамка вокруг элемента

2. Применение стиля будет происходить в обработчике события MouseOver.

void Document_MouseOver(object sender, HtmlElementEventArgs e)
{
if (e.ToElement != null & e.ToElement.Style == null)
{
e.ToElement.Style = "border: 2px solid red;";
}
}

Проверим, как работает данная часть кода. Запускаем приложение и начинаем наводить мышку на любые элементы на странице.

выделение элемента

В принципе всё работает, но хотелось бы сделать так, чтобы при переключении с одного элемента на другой, выделение (рамка) исчезало.

3. В обработчике события DocumentCompleted подписываемся на событие MouseLeave.

private void wb_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
wb.Document.MouseOver +=
new HtmlElementEventHandler(Document_MouseOver);
//добавить
wb.Document.MouseLeave +=
new HtmlElementEventHandler(Document_MouseLeave);
}

4. Присвоим свойству Style значение null и вместо ToElement укажем свойство FromElement.

void Document_MouseLeave(object sender,  HtmlElementEventArgs e)
{
e.FromElement.Style = null;
}

Снова запускаем приложение, теперь всё работает как надо. Если вам было, что-то не понятно, то посмотрите видео.

Читайте также:


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices