mshtml.HTMLDocumentClass в C # - PullRequest
       25

mshtml.HTMLDocumentClass в C #

2 голосов
/ 15 июля 2009

В C # мне удалось получить весь HTMLDocumentClass из объекта InternetExplorer (переход к определенному URL).

Однако в режиме отладки Visual Studio 2008 содержимое этого HTMLDocumentClass для этого конкретного URL-адреса является MASSIVE, включая такие атрибуты, как activeElement, alinkColor, all, апплеты, charset, childNodes и т. Д. И т. Д. И т. Д. И т.

На этой странице есть кнопка, которую я хочу изменить на "Нажал". Но я понятия не имею, как найти имя / идентификатор / тег этой кнопки. Есть простое руководство, в котором используются такие выражения, как:

HTMLInputElement button =
  (HTMLInputElement)theDoc.getElementById("Button1");
button.click();

Но структура моего URL-адреса в 100 раз сложнее.

Скажем, URL-адрес yahoo.com, и я хочу «нажать» кнопку веб-поиска.

Любой систематический способ сделать это?

1 Ответ

5 голосов
/ 16 июля 2009

Предполагается, что мой элемент управления WebBrowser находится на Yahoo. Идентификатор кнопки поиска - "searchsubmit"

Использование Windows.Forms.HtmlDocument

 HtmlElement button = (HtmlElement)htmlDoc.GetElementById("searchsubmit");
 button.InvokeMember("click");

При использовании mshtml и HTMLInputElement

   HTMLDocument htmlDoc = new HTMLDocumentClass();
    htmlDoc = (HTMLDocument)axWebBrowser1.Document;

   //find the search text box..
   HTMLInputElement searchTextBox = (HTMLInputElement)htmlDoc.all.item("p", 0);
   searchTextBox.value = "Stack Overflow";

   //find the button
   HTMLInputElement searchButton = (HTMLInputElement)htmlDoc.all.item("searchsubmit", 0);
   searchButton.click();

Если вы посмотрите на источник Yahoo, вы увидите, что текстовое поле поиска находится в нескольких делениях. htmlDoc.all.item позаботится об этом.

...