日期:2014-05-18  浏览次数:20774 次

操作浏览器的问题(续)
http://topic.csdn.net/u/20120501/12/5c1754f9-72fd-4b93-8542-7247e3516b78.html?seed=407444625&r=78423855#r_78423855

无法连续发帖,只能另起新帖接着问了,各位见谅。
程序使用webbrowser控制登陆邮箱后一些表单操作。
需要填充inputField,然后点击“按钮“提交。代码如下:
HTML code

。。。。
<div id="AddFldrInput">
    <div hmid="errorDiv" class="errorDiv" style="display: none;">
</div>
    <input hmid="inputField" style="display: none;" maxlength="30" type="text">
</div></li>
<li class="lnav_item" id="NewFldrBox">
<a id="NewFldrLnk" class="lnav_newLnk" href="#"><span class="Caption">按钮</span>
</a></li>



C# code

 HtmlElement tbAddFldrInput = webBrowser1.Document.All["AddFldrInput"];
 HtmlElement btnAddFldr = webBrowser1.Document.All["NewFldrLnk"];
if (tbAddFldrInput  && btnAddFldr != null)
{
       tbAddFldrInput.SetAttribute("value", "123456");
       btnAddFldr.InvokeMember("click");
 }



但是发现input表单没有id,也无法获取按钮的HtmlElement ,这是怎么回事?
请各位指点下,小弟太菜了。谢谢。

------解决方案--------------------
遍历标签
------解决方案--------------------
webbrowser1.Document.GetElementsByTagName("INPUT")
这样得到所有的<input >的HtmlElement的集合
对于每个HtmlElement elm, if (elm.GetAttribute("type") == "text" && !String.IsNullOrEmpty(elm.GetAttribute("hmid"))),就是你要的input

按钮类似,先GetElementsByTagName("SPAN"),再用GetAttribute("class")看是不是等于Caption,如果页面里符合条件的span只有这么一个,那就是你要的按钮,否则用InnerHtml检查是否等于“按钮”
------解决方案--------------------
GetElementsByID函数试试