我有一个带有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;
}
但上面的代码似乎不起作用,根据to Solution 1 for a similar question on another website,它表示
引起我注意的第一件事是:
<div class="thin">
没有定义div
元素的名称,它定义了它的CSS样式类。而是使用属性名称(或两者),例如:<div class="thin" name="thin">
。
如果只有innerText
属性,如何获取div
元素的class
?
任何帮助都将受到高度赞赏。
答案 0 :(得分:12)
您应该使用ClassName
代替class
:
if (el.GetAttribute("className") == "cls") { … }
答案 1 :(得分: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
答案 2 :(得分: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
{
}
}