CWi*_*nKY 13 c# browser option drop-down-menu
我正在尝试使用WebBrowser控件在WinForm中自动化以从网站导航和提取报告信息.您可以在文本框中输入值并调用按钮和链接的单击事件,但我还没有想出如何以自动方式选择选项下拉列表.... 根据这个html示例,任何人都建议如何从下拉列表中选择项目:
<SELECT id="term_id" size="1" name="p_term_in"><option value="">Select Another Term<option value="201050">Summer 2010<option value="201010">Spring 2010<option value="200980">Fall 2009</SELECT>
Run Code Online (Sandbox Code Playgroud)
对于其他可以学习输入文本框值和调用点击事件的人来说,这是你如何做到的:
webBrowser1.Document.GetElementById("<HTML ELEMENT NAME>").SetAttribute("value", "THE NAME");
Run Code Online (Sandbox Code Playgroud)
调用按钮或超链接单击:
webBrowser1.Document.GetElementById("<BUTTON>").InvokeMember("click");
Run Code Online (Sandbox Code Playgroud)
所以我已经解决了输入值和调用点击的问题,但我还没有解决选择下拉值的问题.
Dar*_*rov 16
假设您在HTML中有以下选择:
<select id="term_id" size="1" name="p_term_in">
<option value="">Select Another Term
<option value="201050">Summer 2010
<option value="201010">Spring 2010
<option value="200980">Fall 2009
</select>
Run Code Online (Sandbox Code Playgroud)
这应该允许您预先选择第三个值:
webBrowser1.Document.GetElementById("term_id").SetAttribute("value", "201010");
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
您必须selected在所需选项上选择属性.
鉴于:
<select id="mySelect">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
以下将选择第三个选项:
webBrowser1.Document
.GetElementById("")
.Children.GetElementsByName("option")[2]
.SetAttribute("selected", "selected");
Run Code Online (Sandbox Code Playgroud)