Требуются разработчики и тестеры для проекта codebyOS

Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

Как нажать на кнопку в окне 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 и интересующего нас имени.

результат

результат


Набираем команду codeby webinar

Набираем команду для организации и проведения вебинаров Подробнее ...

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

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

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

результат

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

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

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

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

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

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

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

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

результат

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

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

Дано:

Решение:

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

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

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

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


Получи 30.000 рублей от codeby

Мы запустили конкурс для авторов, в котором может принять участие любой желающий. За первое место - 7500 руб., второе - 5000, третье 2500. Главный приз 30.000 рублей вы получаете независимо от места в конкурсе. Подробнее на форуме codeby ...

Похожие темы

Web Application Pentesting | Атаки на HTTP Basic A... Привет колеги. Добро пожаловать на курс Web Application Pentesting. В этой статье мы с вами поговорим о: Вспомним немного заголовки ответа серв...
c# Как получить значение HTML элемента?... Получение значения HTML элемента Продолжаем работать с классом WebBrowser и сегодня вы узнаете, как получить значение HTML элемента. Исходный код ...
c# Создание веб-сервера (дополнение)... Создание веб-сервера на языке c# (дополнение) Данная статья является дополнением к предыдущей статье: как создать веб-сервер с помощью языка c#. В не...
Как найти html элемент по атрибуту class... Как найти html элемент по его классу? В этой статье хотелось бы рассказать, как можно быстро и легко найти html элемент по его классу. Поиск элементо...
c# Создание веб-сервера с помощью класса HttpListe... Как создать веб-сервер с помощью класса HttpListener? В этой небольшой статье рассмотрим на простом примере, как создать веб-сервер с помощью языка c...