WebBrowser控件自动点击网页中的SPAN标签

SPAN标签: 

<SPAN title=用户信息 class=tabSpan id=shop_tabsTAB_content4 style="BORDER-LEFT-WIDTH: 1px; HEIGHT: 23px; BORDER-RIGHT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP-WIDTH: 1px; MARGIN-RIGHT: 2px" name="shop_tabstabs4" jQuery227="2564"><SPAN class=selected_left></SPAN><SPAN class=selected_right></SPAN><SPAN style="OVERFLOW: hidden; DISPLAY: block">用户信息</SPAN><SPAN class=tabs-closePic style="DISPLAY: none" jQuery227="2568"></SPAN></SPAN> 
                

用自编函数找到上面的网页元素,并发送点击代码:

bb = FindHtmlElement("用户信息", WebBrowserEx1.Document, "SPAN", "title", True) 
        
bb.InvokeMember("click")    '点击无效
bb.RaiseEvent("onclick")    '点击无效

bb.InvokeMember("MouseDown")      '点击无效
bb.InvokeMember("onMouseDown")    '点击无效,InvokeMember不检查调用成员(onMouseDown)是否有效

bb.RaiseEvent("onMouseDown")      '点击生效,参数不分大小写。RaiseEvent会检查,错误则报:值不在预期的范围内
bb.RaiseEvent("onMouseUp")        '该行代码可以不需要

以前一直走入了一个误区,以为点击就是一定是click动作,网上找的也都是如何如何clcik span标签没响应,殊不知,只需要简单的一个RaiseEvent("onMouseDown")就解决问题。

注:

RaiseEvent的参数不对,例如你做引用:RaiseEvent("click"),则报错如下:

************** 异常文本 **************
System.ArgumentException: 值不在预期的范围内。
   在 System.Windows.Forms.UnsafeNativeMethods.IHTMLElement3.FireEvent(String bstrEventName, IntPtr pvarEventObject)
   在 System.Windows.Forms.HtmlElement.RaiseEvent(String eventName)

=======在这个帖子中《c# webbrowser模拟点击无效》====

蒋晟 2018-09-16

IE的API就是这样,IHTMLElementN的方法都不会触发对应的事件(比如focus方法不会触发onfocus,click方法不会触发onclick,submit不会出发onsubmit之类)。要触发事件的话需要自己去调用IHTMLElement3::fireEvent。这个在Windows Forms里的封装是HtmlElement.RaiseEvent(然而封装得并不好,DHTMLElementEvents2::onclick的参数直接就给传了个null,如果事件脚本有用到window.event的话会出问题)

click方法之前还有一系列事件可能被触发。比如如果页面上onclick事件脚本依赖于之前的onfocus和onmousemove事件的脚本的话你得把这些事件也一起触发。具体要触发哪些事件得去反向工程页面上的脚本。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值