Navigateur Web GetElementsByTagName en boucle dans cette zone de balise

dom getelementsbytagname html-agility-pack vb.net webbrowser-control

Question

J'essaie de trouver un moyen de faire cela depuis quelque temps déjà. Je veux trouver le nom de classe de "live_" que je peux faire très bien avec le code ci-dessous, mais je ne sais pas comment obtenir une valeur de texte dans cette balise de formulaire sans parcourir tout le code et obtenir tout autre texte de formulaire. valeur sur la page.

J'utilise un contrôle Webbrowser sur mon winform.

Le code que je dois obtenir la balise de formulaire est la suivante:

Dim theElementCollection As HtmlElementCollection = Nothing

theElementCollection = wbNewsFeed.Document.GetElementsByTagName("form")

For Each curElement As HtmlElement In theElementCollection
   If curElement.GetAttribute("className").ToLower.Contains("live_") Then
     Dim theID As String = curElement.GetAttribute("data-live")
   End If
Next

Le code ci-dessus est en boucle jusqu'à ce qu'il ne trouve plus de balises de formulaire dans cette page. Si elle trouve une balise de formulaire, elle vérifie si cette balise contient un nom de classe de live_ dans une partie de son nom. Ce code fonctionne très bien et trouve toutes les balises de formulaire de cette classe. Cependant, certaines balises de formulaire ont toujours cette classe, mais pas de zone de texte que je souhaite également rechercher dans cette balise de formulaire uniquement .

Le code HTML ressemble à ceci:

Dim theElementCollection As HtmlElementCollection = Nothing

theElementCollection = wbNewsFeed.Document.GetElementsByTagName("form")

For Each curElement As HtmlElement In theElementCollection
   If curElement.GetAttribute("className").ToLower.Contains("live_") Then
     Dim theID As String = curElement.GetAttribute("data-live")
   End If
Next

Ma question est donc la suivante: comment puis-je consulter uniquement la zone de balise de formulaire actuelle et déterminer si elle contient cette zone de texte (.GetAttribute ("title"). ToString.ToLower = "écrire un commentaire ...") ?

J'ai essayé de faire ce qui suit:

Dim theElementCollection As HtmlElementCollection = Nothing

theElementCollection = wbNewsFeed.Document.GetElementsByTagName("form")

For Each curElement As HtmlElement In theElementCollection
   If curElement.GetAttribute("className").ToLower.Contains("live_") Then
     Dim theID As String = curElement.GetAttribute("data-live")
   End If
Next

Mais cela semble ne faire que parcourir toute la page html encore ...

Merci pour votre temps et votre aide!

Réponse populaire

On dirait que vous avez besoin de:

curElement.Children.GetElementsByName("add_comment_text")(0)



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi