Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > WebBrowser и работа с кнопками/едитбоксами


Автор: theHelg 23.6.2009, 17:53
Добрый день!

сейчас тренируюсь с WebBrowser'ом.

Получать доступ к содержимому страницы я уже научился, переходить по линкам.
А как можно реализовать следующее:
— Уметь заполнять едитбоксы/комбобоксы/радио-бутоны и нажимать на кнопки на странице (сабмит буттоны)??

Не хочется делать это все в ручную, так как тестируемые страницы могут иметь хидден-параметры, чтобы их не вводить (то есть, чтобы страница сама делала вычисления). Как это можно сделать? С помощью чего?

Автор: nikitao 24.6.2009, 03:17
Тебе нужно подключить COM библиотеку Microsoft.mshtml.dll и использовать DOM. Там ты найдешь многое из того , что тебе может понадобиться в такого рода задачах. 

Код

 ((HTMLInputElement)_browser.Document.GetElementById("Email").DomElement).value = login;
            ((HTMLInputElement)_browser.Document.GetElementById("Passwd").DomElement).value = password;
            Application.DoEvents();
            ((HTMLFormElement)_browser.Document.Forms[0].DomElement).submit();
            Application.DoEvents();

Автор: nikitao 24.6.2009, 03:49
Да и забыл вот что добавить :

Ты уверен , что тебе действительно необходимо использовать WebBrowser для твоих целей ? Дело в том , что такой метод взаимодействия с интернетом довольно медленный и нестабильный. Я бы рекомендовал его использовать только если  необходимо отображать странички , как в настоящем браузере или(и) необходимы смешанные действия человека и машины. Во всех остальных случиях лучшим способом будет отсылка соответствующих заголовков с помощью классов HttpWebRequest\Response.

Автор: theHelg 24.6.2009, 11:20
Цитата(nikitao @ 24.6.2009,  03:49)
Да и забыл вот что добавить :

Ты уверен , что тебе действительно необходимо использовать WebBrowser для твоих целей ? Дело в том , что такой метод взаимодействия с интернетом довольно медленный и нестабильный. Я бы рекомендовал его использовать только если  необходимо отображать странички , как в настоящем браузере или(и) необходимы смешанные действия человека и машины. Во всех остальных случиях лучшим способом будет отсылка соответствующих заголовков с помощью классов HttpWebRequest\Response.

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

HttpWebRequest\Response - разве ему не нужно передавать все параметры, в том числе и hidden?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)