以编程方式从. net Webbrowser控件中的下拉菜单中选择一个项目
Programmatically select an item from a drop down in .NET Webbrowser Control
下面是一个html脚本,我从一个网站上抓取的。我想用。net
编程地选择项目<div id="MySite.condition_s-wrp" class="c-wrp-slctbx" style="z-index: 1;">
<input id="MySite.condition_s-input" type="text" autocomplete="off" readonly="readonly" tabindex="0" class=" c-slctbx-medium" style="width: 268px;">
<ul class="c-ul-slctbx max_height_300" style="width: 285px; display: none; top: 21px;">
<li id="MySite.condition_s-option-" class="c-li-slctbx">Please choose</li>
<li id="MySite.condition_s-option-First" class="c-li-slctbx">First</li>
<li id="MySite.condition_s-option-Second" class="c-li-slctbx">Second</li>
</ul>
<select id="MySite.condition_s" name="attributeMap[MySite.condition_s]" class=" c-slctbx-medium" style="display: none;">
<option value="">Please choose</option>
<option value="First">First</option>
<option value="Second">Second</option>
</select>
</div>
请注意下面的代码根本不起作用
webBrowser1.Document.GetElementById("MySite.condition_s").SetAttribute("value", "First");
最后我和我的一个朋友弄明白了。这个小函数将很容易地完成其余的工作。
感谢Farrukh Momin和他的时间
public void SetComboItem(string id, string value) {
HtmlElement ee = this.webBrowser1.Document.GetElementById(id);
foreach (HtmlElement item in ee.Children) {
if (item.OuterHtml.ToLower().IndexOf(value.ToLower()) >= 0) {
item.SetAttribute("selected", "selected");
item.InvokeMember("onChange");
}
else {
item.SetAttribute("selected", "");
}
}
ee = this.webBrowser1.Document.GetElementById(id + "-input");
ee.InnerText = value;
}
调用函数 this.SetComboItem("MySite.condition_s", "First");
你试过了吗:
webBrowser1.Document.GetElementById("MySite.condition_s").selectedIndex = 1
试试这个
HtmlDocument document = webBrowser1.Document;
HtmlElement siteCondition = document.GetElementById("MySite.condition_s");
var option = siteCondition.Children.Cast<HtmlElement>().First(x => x.GetAttribute("value").Equals("First"));
option.SetAttribute("selected", "selected");
这是您的解决方案,只需通过示例:http://www.vbforums.com/showthread.php?701093-Webbrowser-Control-Select-Dropdownlists-option
或
http://social.msdn.microsoft.com/forums/en - us/vsexpressvb/thread/b1273d78 d4af - 49 - e0 - 9238 - 6 - f86e9952484/
我发现,如果你只是一个接一个地调用click,你应该能够找到你想要的,通过在其中做一个for循环点击
HtmlElement site = this.webBrowser2.Document.GetElementById("myId");
foreach (HtmlElement item in site.Children)
{
if (item.InnerText.ToString() == "something")
{
item.InvokeMember("Click");
break;
}
else
{
item.InvokeMember("Click");
}
}
100%工作代码(在win7 - ie11上测试)
从:c# | WebBrowser控件-以编程方式在html上选择项目http://mdb-blog.blogspot.com/2016/12/c-browser-control-programmatically.html
HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("select")
foreach (HtmlElement heItem in col)
{
if (heItem.GetAttribute("className").Contains("exampleClassName") == true)
{
heItem.SetAttribute("selectedIndex", "3"); // select value at #3
break; // incase of needed...
}
}
相关文章:
- 在边栏中动态选择项目
- 如果选择了其他选择项目,则隐藏选择项目
- 在 for 循环中选择项目
- 使用ajax/javascript选择项目并将其添加回mysql
- 使用自动完成功能未正确选择项目
- 从laravel 5中的下拉框中选择项目时,应更改隐藏的输入值
- AngularJS下拉列表在选择项目后丢失内容
- 如何从集合中随机选择项目
- 如何在选择项目时使用 ajax 将数据提取到输入字段中
- 检查是否未从下拉列表中选择项目
- 如何使用 jquery 在多组列表框中选择项目
- 选择项目时,kendoListView 更改事件会触发两次
- 无法使用 jQuery .select2 选择项目
- 用于使用 Tab 键选择项目的事件
- 在下拉框中选择项目时更改文本框值
- Jquery - 按 ID 选择项目不起作用
- 使用哈希标记从下拉列表中预先选择项目
- 从下拉列表中选择项目后,显示新选项并显示文本
- 选择项目并一次显示n篇文章
- 有效的javascript算法,用于从数组中选择项目,其中每个条目具有不同的权重