读书人

WebBrowser通过id查不到页面上的元素

发布时间: 2013-07-20 11:07:48 作者: rapoo

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标记 然后循环得到自己想要的就可以了。

读书人网 >C#

热点推荐