Как из C# программно нажать html кнопку в документе webbrowser?
- 17 Сен 2010
- Рубрика:C# . WebBrowser
- Ваш отзыв
Недавно столкнулся с одним интересным вопросом “Как из C# программно нажать html кнопку в документе webbrowser?“. Написал программку на C# для добавления новостей на сайт. Обычный компонент webbrowser который содержит документ с необходимыми полями для новости и кнопкой “отправить”. Мне стало интересно как сделать так, чтобы при нажатии кнопки на форме C# имитировался клик по кнопке в webbrowser . В этом случае компонент webbrowser можно сделать невидимым для пользователя, что очень удобно.
В компоненте WebBrowser полно полезных инструкций для работы с html документами. Начиная от замены содержимого документа, до имитации ввода данных в поля, нажатия на кнопку.
У компонента WebBrowser есть свойство Document, с помощью которого можно решить поставленную проблему, автоматического нажатия на кнопку или заполнение полей.
Пример:
Автоматический клик.
[cc lang="cs"]webBrowser1.Document.GetElementById(“button”).InvokeMember(“click”);[/cc]
Элемент с именем “button”, по сути это
[cc lang="html"]
[/cc]
Заполнение полей.
[cc lang="cs"]webBrowser1.Document.GetElementById(“textarea”).SetAttribute(“value”, “text”);[/cc]
Элемент с именем “textarea”.
[cc lang="html"]
[/cc]
Спасибо, очень помогло.
Спасибо большое!!!
Приведенный пример с нажатием кнопки немного не корректен для данного HTML-кода, просто вы обращаетесь к кнопке по ID, которого в приведенном HTML -коде отсутствует. С заолнением textarea аналогично. Я понимаю что это не критично…но вот у меня задача кликнуть по кнопке в HTML-форме без ID…один метод я нашел, но он меня не оч устраивает…может вы чем поможете?! есть кстати метод InnerHTML если не ошибаюсь, который тоже заполняет текстовые поля, если надо, могу показать потом примерчик =)
ЗЫ: Юрий, еще 1 пожелание, поправить кновочку для отправки коментария, ато value видимо не задан, и надпись submit может некоторых смутить =)
Приветствую, Коля. Спасибо за замечания, все поправлю =)
Вообще можно по любому атрибуту выбрать элемент, например вот таким способом:
[cc lang="C#"]HtmlElementCollection htc = webBrowser1.Document.GetElementsByTagName(“input”);
foreach (HtmlElement he in htc)
{
if(he.GetAttribute(“name”).Equals(“name1″))
he.InvokeMember(“click”);
}[/cc]
Просто получаем коллекцию элементов по названию тега и далее для каждого элемента сравниваем значение атрибута ‘name’ (для данного примера) cо стрингом “name1″.
InnerHTML для других немного целей =)
Но пример интересно было бы глянуть, выкладывай =)
Great спс. Второй день ищу. Очень помогло.
А что-нить подобное в консольном проекте возможно замутить?
Првет. А кто подскажет как нажать эту кнопку.
Улучшить до уровня 2
Когда <input type="text"… то все получается у меня, но мне нужно написать в textarea то есть у меня ест <textarea rows="10" id="ghjfgh" name="adfjkj"…. тут не вставляется текст