WebBrowser透过id查不到页面上的元素
我需要获取上图中用长框框标注起来部分的元素<b name="selectedcard"...... style="display:none;"></b>,并将其style改成:style="display:bold;"
离它最近且有id标注的是图中标注的<div id="roof"...>....</div>
我在webBrowser的documentCompleted事件中做如下处理,找不到所需ID
private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument doc= wb.Document;
List<string> Ids = new List<string>();
foreach (HtmlElement he in doc.All)
{
int number=doc.All.Count;
if (he.Id != null)
{
Ids.Add(he.Id);
}
if (he.Id == "roof")
{
}
}
}
问题如下:多次加载相同的网页,发现每次number=doc.All.Count获取的数目不一样;
数组Ids中Id!=null的数目也不一样;
偶尔能查到id=roof的元素,但是大部分时间查不到。 跪求高手解疑啊。
我最终的目的是要改长框框标注部分的style,可以通过其他方式实现嘛?
[解决办法]
判断一下文档是否加载完成
private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (wb.ReadyState == WebBrowserReadyState.Complete)//
{
HtmlDocument doc = wb.Document;
List<string> Ids = new List<string>();
foreach (HtmlElement he in doc.All)
{
int number = doc.All.Count;
if (he.Id != null)
{
Ids.Add(he.Id);
}
if (he.Id == "roof")
{
}
}
}
}
[解决办法]
参考。
HtmlDocument htmlDoc = webBrowser1.Document.Window.Frames["mainFrame"].Document;
if (htmlDoc != null)
{
string qssj = htmlDoc.All["ajc10a"].GetAttribute("value");//缴费起始时间
string jssj = htmlDoc.All["ajc10b"].GetAttribute("value");//缴费截止时间
}
[解决办法]
先检测出html b标记 然后循环得到自己想要的就可以了。