Простое управление браузером в C # - PullRequest
1 голос
/ 17 сентября 2009

У меня есть простая C # WinForms Crud AP для сотрудников, которым приходится выполнять множество простых поисков в Интернете. В настоящее время он загружает 5 веб-сайтов и помещает поисковый запрос в буфер обмена. Затем сотрудник должен вставить поисковый запрос в текстовое поле поиска на каждом из сайтов и нажать клавишу ввода. Есть ли простой способ ввести данные для них? Текстовое поле поиска обычно имеет фокус при загрузке сайтов, я просто не могу найти способ определить, когда страница загружена или как отправить данные в окно.

Из этих полезных ответов, похоже, я поступил неправильно. Я использовал код, найденный с помощью моего хорошего друга, г-н Google

System.Diagnostics.Process.Start("www.website.com");
Clipboard.SetText(textBox1.Text, TextDataFormat.Text);

Я проведу еще несколько исследований на этой неделе по управлению веб-браузером

Ответы [ 3 ]

3 голосов
/ 17 сентября 2009

Вы можете использовать событие DocumentCompleted WebBrowser, чтобы получать уведомления о завершении загрузки страницы.

Если текстовое поле, в которое вы вводите текст, имеет уникальный идентификатор, вы можете использовать WebBrowser.Document.GetElementById:

webBrowser.Document.GetElementById("some_id").InnerText = theSearchText;

GetElementById возвращает экземпляр HtmlElement (или ноль, если элемент не был найден). Обратите внимание, что «.InnerText» может не работать для всех типов элементов, есть также InnerHtml и множество других свойств, я бы рекомендовал поиграться с классом HtmlElement , прежде чем решить, как его использовать.

Дайте мне знать, если у вас нет уникального идентификатора для элемента, есть много других способов найти элемент. включая использование открытого DOM через Document.Body.

1 голос
/ 17 сентября 2009

Вы должны иметь возможность подключиться к событию Webbrowser Navigated, которое сообщит вам, когда страница загружена (я ДУМАЮ! Я не уверен на 100%). Что касается настройки текста, если вы уверены, что текстовое поле имеет фокус, вы можете сделать что-то вроде этого:

        Clipboard.SetText("Stackoverflow");
        this.webBrowser1.Document.ExecCommand("Paste", false, null);
0 голосов
/ 17 сентября 2009

Событие DocumentCompleted WebBrowser наступает при загрузке страницы (или фрейма!). Когда на странице есть фреймы, событие DocumentCompleted вызывается несколько раз. В событии DocumentCompleted вы сравниваете свойство ReadyState с ReadyState.Completed, чтобы проверить, полностью ли оно загружено.

Но в целом использование SendKeys - не лучший способ сделать это. Ответ Мэтью Бриндли (для использования GetElementById) - лучший способ, хотя он не работает для элементов управления вводом файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...