首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-07-20 
WebBrowser透过id查不到页面上的元素我需要获取上图中用长框框标注起来部分的元素b nameselectedcard.

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

热点排行