5

我有一个带有webBrowser1控件的表单,用于加载在其 HTML 部分中包含以下行的页面:

 ...
 <div class="cls">
 Hello World !
 </div>

我需要得到innerText元素的div。我尝试了以下方法:

 string result = "";
 foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div"))
                if (el.GetAttribute("class") == "cls")
                {
                    result = el.InnerText;
                }

但是上面的代码似乎不起作用,根据解决方案 1 在另一个网站上的类似问题,据说

引起我注意的第一件事是:<div class="thin">没有定义div元素的名称,它定义了它的 CSS 样式类。相反,使用属性名称(或两者),例如:<div class="thin" name="thin">.

如果只有一个属性innerText,我怎样才能得到div元素的?class

任何帮助将不胜感激。

4

3 回答 3

13

您应该使用ClassName而不是class

 if (el.GetAttribute("className") == "cls") { … }

有关详细信息,请参阅HtmlElement.GetAttribute("class") 不运行

于 2013-04-20T23:39:07.480 回答
1

添加runat="server"ID属性div如下:

 …
 <div class="cls" ID="hello_div" runat="server">
 Hello World !
 </div>

添加runat="server"属性后,您可以ID像对象一样在后面的代码上调用它:

string result = hello_div.InnerText; // or InnerHtml
于 2013-04-20T23:10:17.017 回答
0
        HtmlDocument doc = webBrowser1.Document;
        HtmlElementCollection divs = doc.GetElementsByTagName("div");

        foreach (HtmlElement div in divs)
        {
            try
            {
                var info = div.DomElement;
                PropertyInfo[] pi = info.GetType().GetProperties();

                string strClass = pi[0].GetValue(div.DomElement).ToString();

                if (strClass == "cls")
                {
                        //DoStuff
                }
            }
            catch
            {

            }
        }
于 2015-07-24T14:00:34.053 回答