webbrowser获取无ID无Name控件并模拟点击
来源:互联网 发布:模拟板胡软件 编辑:程序博客网 时间:2024/04/29 23:00
常见的获取控件并点击(自动登录):
var txtUserID = wbsTask.Document.All["userName"];var txtPsd = wbsTask.Document.All["password"];var txtVrf = wbsTask.Document.All["code"];var btnSubmit = wbsTask.Document.All["btnSubmit"];var code = ReadLoginVerifyCode();var userInfo = cboAccount.ComboBox.SelectedValue as UserInfo;if (userInfo == null) { MessageBox.Show("获取用户信息失败!"); return; }txtUserID.SetAttribute("value", userInfo.UserID);txtPsd.SetAttribute("value", userInfo.Password);txtVrf.SetAttribute("value", code);if (string.IsNullOrWhiteSpace(code)) return;btnSubmit.InvokeMember("click");//自动提交
特殊需求:查找webbrowser页面上的一个无ID无Name的A控件,后台模拟点击事件。
初始代码:
var b = wbsTask.Document.Body.InnerText.Contains("XXX");if (!b) return false;foreach (HtmlElement he in wbsTask.Document.GetElementsByTagName("a")){ if (he.InnerText == "XXX") { he.InvokeMember("click"); }}
最后发现无法引发click事件,而a处的代码为:
<a href="javascript:;" onclick="dialog(650,450,'zzz','../../dialog/sss.aspx?id=bbb');return false;" class="link_t">XXX</a>
也就是说click事件调用了一个javasript函数。
为毛没有执行he.InvokeMember("click")这句呢?我百思不得其解。附带说明,上面的代码是在documentComplete事件时调用的,所以页面加载已经完成。
在网上搜寻解决方案,得几种提示
提示一:html代码已经加载完毕,但js还没有加载完毕,解决方案timer一下。
if (he.InnerText == "XXX"){ new Action(() => { System.Threading.Thread.Sleep(10000); new Action(() => he.InvokeMember("click")).InvokeRun(this); }).RunThread();}
这里的InvokeRun(this)是多线程回调,RunThread新开线程执行代码。测试结果:无效--------.
提示二:click变Click或onclick,无效。
提示三:
if (he.InnerText == "XXX"){ wbsTask.Document.Focus(); IHTMLElement nativeElement = he.DomElement as IHTMLElement; nativeElement.click();}
测试结果:无效*-----
最终解决方案:
if (he.InnerText == "XXX"){ var obj = he.DomElement; var mi = obj.GetType().GetMethod("click"); mi.Invoke(obj, new object[0]);}
成功搞定!
阅读全文
0 0
- webbrowser获取无ID无Name控件并模拟点击
- C# webBrowser 模拟点击输入 模拟点击无ID 无name的html元素按钮
- C# webBrowser 自动登录淘宝 模拟点击输入 模拟点击无ID 无name的html元素按钮
- C# webBrowser 自动登录淘宝 模拟点击输入 模拟点击无ID 无name的html元素按钮
- C# webBrowser 自动登录淘宝 模拟点击输入 模拟点击无ID 无name的html元素按钮
- C# webBrowser 自动登录淘宝 模拟点击输入 模拟点击无ID 无name的html元素按钮
- Delphi Webbrowser无Name及ID时自动点击按钮
- 模拟点击框架网页内无id无name的按钮
- 获取点击控件Name,并更改Text值
- ListView控件点击无响应
- C# webBrowser控件 如何查找没有id没有name的元素
- C++实现WebBrowser控件中对鼠标点击事件的监听,并获取所点击标签的超链接
- 让嵌入窗体的 WebBrowser 控件无边框(转)
- DELPHI 中让嵌入窗体的 WebBrowser 控件无边框
- 让嵌入窗体的 WebBrowser 控件无边框
- 让嵌入窗体的 WebBrowser 控件无边框 vc/mfc
- 模拟点击Webbrowser
- C# WebBrowser控件实现定时模拟按钮点击
- Machine Learning Yearning读书笔记(转载)
- 忘记密码中的邮箱验证
- springboot+mybatis+springmvc+mysql简单项目
- 背景图片全屏(背景图片没有撑满屏幕)
- 8-33 求二叉树的深度
- webbrowser获取无ID无Name控件并模拟点击
- echarts绵阳地图,点击区拿到对应区的数据
- MySQL/Mariadb基准测试工具-sysbench使用2
- 02.JavaScript语法上
- Java-求合数的质因数
- 九九乘法表——Java
- 佳博LabelShop模板文件转成佳博打印机指令软件
- 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.
- 解决eclipse配置Tomcat时找不到server选项(Mac通用)