WebBrowser控件HTMLDocument自动选择选项下拉列表

我正在尝试使用WebBrowser控件在WinForm中自动化以从网站导航和提取报告信息。 您可以在文本框中输入值并调用按钮和链接的单击事件,但我还没有想出如何以自动方式选择选项下拉列表…. 根据这个html示例,任何人都建议如何从下拉列表中选择项目:

Select Another TermSummer 2010Spring 2010Fall 2009 

对于其他可以学习输入文本框值和调用点击事件的人来说,这是你如何做到的:

 webBrowser1.Document.GetElementById("").SetAttribute("value", "THE NAME"); 

调用按钮或超链接单击:

 webBrowser1.Document.GetElementById("

所以我已经解决了输入值和调用点击的问题,但我还没有解决选择下拉值的问题。

假设您在HTML中有以下选择:

  

这应该允许您预先选择第三个值:

 webBrowser1.Document.GetElementById("term_id").SetAttribute("value", "201010"); 
 var select = webBrowser.Document.GetElementById("ddlProyectos"); mshtml.HTMLSelectElement cbProyectos = select.DomElement as mshtml.HTMLSelectElement; var total = cbProyectos.length; for (var i= 0; i < total; i++) { cbProyectos.selectedIndex = i; if (cbProyectos.value.Contains("13963")) { break; } } //cbProyectos.selectedIndex = 4; select.InvokeMember("onchange"); select.Children[4].SetAttribute("selected", "selected"); var theElementCollection = webBrowser.Document.GetElementsByTagName("select"); foreach (HtmlElement el in theElementCollection) { if (el.GetAttribute("value").Equals("13963")) { el.SetAttribute("selected", "selected"); //el.InvokeMember("click"); } } 

您必须在所需选项上选择selected属性。

鉴于:

  

以下将选择第三个选项:

 webBrowser1.Document .GetElementById("") .Children.GetElementsByName("option")[2] .SetAttribute("selected", "selected"); 

试试这个:

在项目中添加对microsoft.mshtml的引用 – >添加引用…

  Dim cboTemp As mshtml.HTMLSelectElement cboTemp = WebBrowser1.Document.GetElementById("myselect").DomElement cbotemp.selectedindex = 2 

将变量cbotemp设置为select元素可以让您更好地访问控件:)

 HtmlElement hField = webBrowser1.Document.GetElementById("ID"); hField.SetAttribute("selectedIndex", "2"); 

索引选择( 基于零 )而不是 ….

对于那些正在寻找解决这个问题的人来说,五年后我正在回答这个post。

如果您只需要提交/发布下拉列表的值,那么此行就足够了:

 webBrowser1.Document.GetElementById("term_id").SetAttribute("value", "200980"); 

但是如果你真的需要选择一个基础OPTION,那么:

 HtmlElement selectDom = webBrowser1.Document.GetElementById("term_id"); foreach (HtmlElement option in selectDom.GetElementsByTagName("option")) { if (option.GetAttribute("value") == "200980") { var dom = option.DomElement as dynamic; dom.selected = true; // selectDom.InvokeMember("onChange"); // if you need this too break; } } 

你可以用这个:

 webBrowser1.Document.GetElementById("term_id").SetAttribute("value",yourText);