解决C# webBrowser 操作多级联动Select下拉框
最近在做一个类似于注册机的网页模拟操作,用的是winform窗体应用程序中的webBrowser实现的。但是在实际开发过程中遇到了一个多级select联动的问题,只有当选中了第一个select时,第二个select选择框中才会有数据可以选中。我在百度/谷歌/必应上均进行了搜索,结果一个能用的解决方案都没有,最后我用了另一种思路解决了问题。
问题截图:
问题描述:
只有选择了广东省才会加载下面的城市,而webBrowser操作html中的select并不能触发select的onchange事件,所以第二个或者第三个select中并不会有选择项出现
解决方法:
private void button6_Click(object sender, EventArgs e)
{
webBrowser1.Stop();
//找到select并选中
webBrowser1.Document.GetElementById("regulations-select").SetAttribute("selectedIndex", "1");
//创建一个script脚本
HtmlElement script1 = webBrowser1.Document.CreateElement("script");
script1.SetAttribute("type", "text/javascript");
script1.SetAttribute("text", "function _func(){$('#regulations-select').trigger('change')}");
//将脚本加入到body中并执行
webBrowser1.Document.Body.AppendChild(script1);
webBrowser1.Document.InvokeScript("_func");
//延迟1500毫秒
Delay(1500);
//找到第二个select并选中
webBrowser1.Document.GetElementById("checkout-regulations-select").SetAttribute("selectedIndex", "1");
//创建一个script脚本
HtmlElement script2 = webBrowser1.Document.CreateElement("script");
script2.SetAttribute("type", "text/javascript");
script2.SetAttribute("text", "function _func(){$('#checkout-regulations-select').trigger('change')}");
//将脚本加入到body中并执行
webBrowser1.Document.Body.AppendChild(script2);
webBrowser1.Document.InvokeScript("_func");
}
解决思路:
先在webBrowser1中找到第一个select,操作并选中,然后创建一个script脚本,插入js执行一下第一个select的 change 事件,这样第二个下拉框就会有值了,然后再操作第二个select,这样第三个select就有值了,这样不论有多少个select都可以实现多级联动。
版权声明:
作者:兴兴
文章:解决C# webBrowser 操作多级联动Select下拉框
链接:https://www.networkcabin.com/notes/2515
文章版权归本站所有,未经授权请勿转载。
作者:兴兴
文章:解决C# webBrowser 操作多级联动Select下拉框
链接:https://www.networkcabin.com/notes/2515
文章版权归本站所有,未经授权请勿转载。
THE END