2009-07-15 2 views
2

C#에서는 InternetExplorer 객체 (특정 URL로 이동)에서 전체 HTMLDocumentClass를 가져올 수있었습니다.mshtml.HTMLDocumentClass in C#

그러나 Visual Studio 2008의 디버그 모드에서이 특정 URL에 대한이 HTMLDocumentClass의 내용은 activeElement, alinkColor, all, 애플릿, charset, childNodes 등 등의 속성을 포함하여 크기가 큽니다.

해당 페이지에 "Clicked"로 변경하려는 버튼이 있습니다. 하지만 그 버튼의 이름/ID/태그를 찾는 방법을 모르겠습니다. 다음과 같은 문을 사용하는 간단한 자습서가 있습니다.

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

그러나 URL의 구조는 그보다 100 배 복잡합니다.

URL이 yahoo.com이고 웹 검색 버튼을 '클릭'하고 싶다고 가정 해 보겠습니다.

이 문제에 대해 체계적인 방법이 있습니까?

답변

5

내 WebBrowser 컨트롤이 야후에 있다고 가정합니다. 야후 소스를 보면 검색 버튼의 ID가 MSHTML에와 HTMLInputElement를 사용하는 경우 Windows.Forms.HtmlDocument

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

사용 "searchsubmit"

입니다

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(); 

, 당신은 검색 것을 볼 수 있습니다 텍스트 상자가 여러 div에 있습니다. htmlDoc.all.item이 처리합니다.

+0

이 버튼이 DIV 요소의 세 레이어 내에 있으면 어떻게 될까요? 즉, DIV1에 속하는 DIV2 아래에있는 DIV3 아래에 있습니다. 어떻게 탐색 할 수 있습니까? 가정 mshtml – Saobi

+0

내 대답을 업데이 트했습니다. 거기에 얼마나 많은 DIV가 있는지는 중요하지 않습니다. htmlDoc.all.item은 문서의 모든 항목을 처리합니다. –

+0

이 작품을 당신을 위해 만들었습니까? –