2014年12月30日
mshtml与webBrowser获取网页元素方式总结
作为一个C#自学中的新手,每走一步都特别的艰难。例如在使用mshtml与webBrowser时找一个正确的方式来获取到网页元素,都颇费周折。在此记录一下近期的学习经验,供需要的同学参考。
1.mshtml获取网页元素的方式
mshtml使用时,常见的都是先获取某一种tag名称的元素集合,然后再根据一些特征量,例如className,innertext,name等特征内容来遍历该集合来确定具体内容。get类型的只有getElementsByTagName,除非当前网页界面中某个Tag名是唯一的,否则通过此方式只是获取后,仍然需要通过遍历的方式来确定元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
foreach (mshtml.IHTMLElement ieElement in ieDoc.all) { if (ieElement.tagName.ToUpper().Equals("A")) { aCoin = ((mshtml.HTMLAnchorElementClass)ieElement); //此处必须先判断当前元素有className才可以判断其名称值,否则会报错 if (aCoin.className != null) { if (aCoin.className.Trim() == "btn login-btn J_GoTodayBtn") { aCoin.click(); } } } } |
在进行特征值判断时,需要注意的是:
1.1 务必确认当前类型的网页元素确实存在当前属性className,innertext,name,若其中某一个元素不存在当前属性,将会出现如下错误:
1.2 如果需要对className,innertext,name获取的字符串继续调用tirm或其他函数,务必确认该变量不为空。
2.webBrowser获取网页元素的方式
webBrowser的使用方式则更加灵活一些,不仅包含了我们最亲切的GetElementById,并且可以使用mshtml中获取元素的方式。