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:

<form class="live_574bf67566_58vvifkfkyu5237 commentable expand_mode" id="0_f" 
 onsubmit="return window.Event &amp;&amp;" action="change.php" method="post"
 data-ft='{"ge":"]"}' rel="async" data-live='{"seq":"574bf67566_1857067654230"}'>

   <input name="charset_test" type="hidden" value="6,52g,6b88">
   <input name="fb_dtsg" type="hidden" value="AQB4SLmU" autocomplete="off">
   [LOT of code here....]
   <input class="hiddenInput" type="hidden" autocomplete="off" data-id="785fgj67-774">
   <div class="innerWrap" data-reactid=".1l.1:4.0.$right.0.0.0.0.1.0.1">
      <textarea name="add_comment_text" title="Write a comment..." class="textInput mentions" placeholder="Write a comment..." value="Write a comment..." data-id="57-986-gn-52">Write a comment...</textarea>
   </div>
   [some more code here]
</form>

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 theElementCollection2 As HtmlElementCollection = Nothing

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

      theElementCollection2 = curElement.Document.GetElementsByTagName("textarea")

      For Each curElement2 As HtmlElement In theElementCollection2
         Debug.Print(curElement2.GetAttribute("title").ToLower.ToString)
         If curElement2.GetAttribute("title").ToLower.ToString = "write a comment..." Then
            Debug.Print("Found! " & curElement2.GetAttribute("name"))
         End If
      Next
   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)


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow