2009-07-15 9 views
2

In C# konnte ich die gesamte HTMLDocumentClass von einem InternetExplorer-Objekt abrufen (zu einer bestimmten URL navigieren).mshtml.HTMLDocumentClass in C#

Im Debug-Modus von Visual Studio 2008 ist jedoch der Inhalt dieser HTMLDocumentClass für diese bestimmte URL MASSIVE, einschließlich Attribute wie activeElement, alinkColor, all, Applets, Zeichensatz, ChildNodes, etc, etc.

Es gibt eine Schaltfläche auf dieser Seite, die ich auf "Clicked" ändern möchte. Aber ich habe keine Ahnung, wie ich den Namen/ID/Tag dieses Buttons finde. Es gibt ein einfaches Tutorial, das Anweisungen wie folgt verwendet:

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

Aber die Struktur meiner URL ist 100-mal komplexer als das.

Angenommen, die URL lautet yahoo.com und ich möchte auf die Schaltfläche "Web Search" klicken.

Jede systematische Vorgehensweise?

Antwort

5

Dies ist vorausgesetzt, dass mein WebBrowser Steuerelement bei Yahoo ist. Die ID des Suchtaste ist "Suche"

Windows.Forms.HtmlDocument Mit

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

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

Wenn man sich Yahoo Quelle Wenn verwenden, werden Sie, dass die Suche sehen Textfeld befindet sich in mehreren divs. htmlDoc.all.item kümmert sich darum.

+0

Ok. Was, wenn dieser Knopf in drei Schichten von DIV-Elementen vergraben ist. Das heißt, es ist unter DIV3, die unter DIV2 ist, die unter DIV1 ist. Wie kann ich navigieren? Angenommen, mshtml – Saobi

+0

Ich aktualisierte meine Antwort. Es spielt keine Rolle wie viele DIVs dort sind, htmlDoc.all.item durchläuft alle Elemente im Dokument. –

+0

hat das für dich funktioniert? –