Web瀏覽器GetElementsByTagName在該標記區域內循環

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

我一直試圖弄清楚如何這樣做一段時間了。我想找到“live_”的表單類名,我可以使用下面的代碼做得很好,但我不確定如何在該表單標記中獲取文本值而不循環遍歷整個代碼並獲取所有其他表單文本頁面上的值。

我在winform上使用webbrowser控件。

我必須得到表單標記的代碼是這樣的:

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

上面的代碼當前循環,直到它在該頁面中找不到更多的表單標記。如果它找到了一個表單標記,那麼它會查看該表單標記是否在其名稱的任何部分中包含一個類名為live_的內容 。此代碼工作正常,並找到該類的所有表單標記。但是,某些表單標記仍然具有該類但沒有我想要僅在該表單標記中搜索的文本框。

html看起來類似於:

<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>

所以我的問題是:我如何只瀏覽當前的表單標籤區域並查找它是否具有該文本框(.GetAttribute(“title”)。ToString.ToLower =“寫評論......”)

我嘗試過以下操作:

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

但這似乎只是遍及整個html頁面仍然...

感謝您的時間和幫助!

熱門答案

好像你需要:

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow