Класс SendKeys в C # - PullRequest
       14

Класс SendKeys в C #

1 голос
/ 15 июля 2009

У меня есть программа на c #, которая использует класс Process для запуска Internet Explorer и переходит на URL.

Затем он отправляет определенные строки в поле поиска на этой странице, копирует весь экран возвращенных результатов и обрабатывает его.

Проблема, с которой я столкнулся, такова:

Я использую SendKeys.SendWait ("abc") для отправки строки на страницу в Internet Explorer (активное окно). Когда программа работает, я вижу, что на странице иногда указывается «bc», иногда «abbc», иногда «abcc», а иногда и правильно «abc». Каждый пробег выглядит совершенно по-другому. Эта проблема возникла на нескольких машинах, которые я тестировал. Но на моей собственной машине, где я изначально разрабатывал это, я никогда не видел, чтобы это произошло, - только когда я тестировал его на других машинах (все под управлением XP).

Я помещаю задержки между утверждениями SendWait, чтобы решить случайные проблемы со временем, но должен ли я верить, что даже в тех же утверждениях SendWait есть проблемы?

Требуется помощь. Спасибо.

1 Ответ

1 голос
/ 24 января 2012

Если вы пытаетесь получить источник веб-страницы, я бы предложил использовать что-то вроде

WebClient client = new WebClient();
client.DownloadString("http://mypage");

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

RegEx textSelector = new RegEx("<div>([^<]+?)</div>");
string pageText = "";
foreach(var match in textSelector.Matches(myHtml))
    pageText += match.Groups[0].Value;

Внимание, этот код был написан на моей голове, не проверен и, вероятно, приведет к некоторым довольно случайным результатам с вложенными тегами:)

...