Как нажать на кнопку в окне webBrowser?

Очень часто в комментариях спрашивают: как нажать на кнопку в окне webBrowser? Так как этот вопрос очень часто повторяется, решил написать небольшую статью, в которой покажу несколько простых примеров, которые помогут решить данную задачу.

И так для начала создадим Windows Forms приложение, после чего поместим на форму: кнопку и элемент управления webBrowser (wb).

Windows Forms

Затем создадим страницу index.html, с которой будем работать на протяжении всей этой статьи.

html страница

открытая страница

На этом подготовительная часть закончена, переходим к примерам.

Примеры

Чтобы выполнить код, приведенный в любом из ниже приведенных примеров, необходимо выполнить следующие действия:

1. Получить содержимое страницы, например это можно сделать с помощью метода Navigate или свойства URL.

2. Дождаться полной загрузки страницы, используя событие DocumentCompleted.

3. Для того чтобы нажать на кнопку на странице, которая находится в окне элемента управления webbrower, необходимо воспользоваться методом InvokeMember, в который в качестве аргумента необходимо передать значение Click.

Как нажать на кнопку с атрибутом id?

В первом примере научимся нажимать на кнопку, которая имеет атрибут id.

Сначала с помощью метода GetElementById находим нужный нам элемент, в данном случае кнопку с указанным атрибутом id, после чего нажимаем на него.

нажата кнопка один

Как нажать на кнопку с атрибутом name?

Во втором примере в качестве задачи нам нужно программно нажать на кнопку под номером шесть, которая имеет атрибут name. Как видно на картинке данный атрибут применяется сразу к двум html элементам, поэтому выполним несколько дополнительных действий: сначала найдем все кнопки на странице, а затем проверим у каждой из них наличие атрибута name и интересующего нас имени.

результат

результат

Как нажать на кнопку с атрибутом class?

В этом примере в качестве задачи нам необходимо нажать на третью кнопку, которая содержит атрибут class. О том, как найти html элемент по его классу я рассказывал в одной из предыдущих статей, поэтому сразу же перейдем к решению задачи.

Если сейчас выполнить данный код, то в результате по очереди будут нажаты все кнопки, которые имеют атрибут class со значением btnClick. «Проблема» заключается в том, что данный атрибут можно применить сразу к нескольким элементам на странице, поэтому необходимо уточнить выборку, например, указав индекс интересующего нас элемента.

результат

нажатая третья кнопка

Как нажать на кнопку, которая находится в окне фрейма?

И последний пример, в котором рассмотрим ситуацию, когда нужно нажать на кнопку, которая находится внутри фрейма. И так для начала создадим ещё один html файл (frm.html), который содержит обычную форму с кнопкой.

html страница с фреймом

страница в браузере

Изменим содержимое страницы index.html

новая страница

При работе с фреймами необходимо использовать проверку, которая позволяет дождаться полной загрузки страницы. Если ей не воспользоваться, то кнопка, в данном примере, будет нажата дважды, так как сначала будет загружена страница frm.html, после чего будет выполнен метод InvokeMember, а затем произойдет загрузка основной страницы index.html, после чего снова происходит нажатие на кнопку. В этом можно легко убедиться, если проследить за изменением значения (e.Url.AbsolutePath).

результат

нажатая кнопка

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

Дано:

Решение:

Либо можно найти кнопку «Продать» по значению, например:

Обратиться к нужной таблице можно не только с помощью цикла, но и по индексу, например:

На этом всё, если вопросы, то оставляйте их в комментариях.

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

Похожие темы

HTTP Cookies | Web Application Pentesting Добро пожаловать на курс Web Application Pentesting колеги. Сегодня мы поговорим с Вами о куки(Cookie). Сразу же хочу предупредить , что у Виве...
Как развернуть у себя на десктопе полноценный веб ... Хочу показать в этой статье как очень легко и без особых знаний развернуть у себя на десктопе полноценный веб сервер, для своих нужд. Очень подойдет...
HTTP Digest Аутентитфикация | Web Application Pent... Привет колеги. Добро пожаловать на курс Web Application Pentesting. В этой статье мы с вами поговорим о: Дайджест(Цифровой) Аутентификации. Попыт...
Как работать с классом WebBrowser?... Пример работы с классом WebBrowser В комментариях многие просят показать или рассказать, как работать с классом webBrowser, а не с одноимённым элемен...
c# Как найти элемент с атрибутом id?... Поиск html элемента с атрибутом id Сегодня хочу показать на простом примере, как найти элемент с атрибутом id с помощью класса WebBrowser. Исходны...