2009-07-15 7 views
2

En C#, j'ai réussi à obtenir l'intégralité de HTMLDocumentClass à partir d'un objet InternetExplorer (en naviguant vers une certaine URL). Cependant, en mode de débogage de Visual Studio 2008, le contenu de cette HTMLDocumentClass pour cette URL particulière est MASSIVE, y compris des attributs tels que activeElement, alinkColor, all, applets, charset, childNodes, etc, etc, etc.mshtml.HTMLDocumentClass in C#

Il y a un bouton dans cette page que je veux que l'on passe à "Cliqué". Mais je n'ai aucune idée de comment trouver le nom/id/tag de ce bouton. Il y a un tutoriel simple qui utilise des instructions comme:

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

Mais la structure de mon URL est 100 fois plus complexe que cela. Disons que l'URL est yahoo.com et que je veux cliquer sur le bouton Recherche Web.

Une manière systématique d'y parvenir?

Répondre

5

Cela suppose que mon contrôle WebBrowser est chez Yahoo. L'identifiant du bouton de recherche est "searchsubmit"

En utilisant Windows.Forms.HtmlDocument

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

Si vous utilisez mshtml et 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(); 

Si vous regardez à la source Yahoo, vous verrez que la recherche La zone de texte est dans plusieurs divs. htmlDoc.all.item prend soin d'elle.

+0

Ok. Que faire si ce bouton est enterré dans trois couches d'éléments DIV. Autrement dit, il est sous DIV3, qui est sous DIV2, qui est sous DIV1. Comment puis-je naviguer? En supposant mshtml – Saobi

+0

j'ai mis à jour ma réponse. Peu importe combien DIV est là, htmlDoc.all.item passe par tous les éléments du document. –

+0

a fait ce travail pour vous –