CN102637194A - BHO中对Web页面元素后绑定事件的触发方法 - Google Patents
BHO中对Web页面元素后绑定事件的触发方法 Download PDFInfo
- Publication number
- CN102637194A CN102637194A CN2012100449312A CN201210044931A CN102637194A CN 102637194 A CN102637194 A CN 102637194A CN 2012100449312 A CN2012100449312 A CN 2012100449312A CN 201210044931 A CN201210044931 A CN 201210044931A CN 102637194 A CN102637194 A CN 102637194A
- Authority
- CN
- China
- Prior art keywords
- script
- function
- incident
- bho
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种BHO中对Web页面元素后绑定事件的触发方法,属于计算机WEB页面处理领域。该方法在发现需要执行的事件是个后绑定事件时,利用在页面嵌入定时脚本,由定时脚本定期检查是否相应事件已被设置,当发现事件已被设置时,由脚本调用相应事件;达到无论在什么情况下都可以使希望的事件能正确执行的目的。优点在于:让BHO组件在页面元素响应事件后绑定的情况下也能成功执行相应函数。
Description
技术领域
本发明的BHO中对Web页面元素后绑定事件的触发方法涉及计算机WEB(万维网)页面处理领域,特别涉及一种需要自动化处理网页及页面元素的响应的方法,尤指一种页面元素响应事件被动态设置的情况下以程序触发该事件的情况。
背景技术
很多时候,我们需要对一些网站用程序进行自动登录,在IE(Internet Explorer, 因特网浏览器)中,我们经常使用BHO(Browser Helper Objects,浏览器帮助者对象)组件来实现该类功能,我们会在网页显示出来后,自动填充登录所需要的用户名和口令,然后模拟点击“登录”按钮,执行按钮的onClick(鼠标单击)事件,完成自动登录。
一般一个完成自动登录的BHO,实现过程如下:在BHO的Invoke方法中,当dispidMember参数等于DISPID_DOCUMENTCOMPLETE时,表示一个WEB页面的内容已被浏览器加载完毕,准备显示了,我们在这里对页面数据进行分析。
1、通过IWebBrowser2接口的get_LocationURL方法获得当前页面的URL(Universal Resource Locator 统一资源定位符)地址,比对此URL地址,看是否是我们需要处理的页面,如果不是,那么就不处理该页面了;如果是,进行下面的步骤。
2、检查网页是否含有口令输入框:遍历所有<input>元素,通过IHTMLElement接口的getAttribute("type")方法获得他们的type属性值,如果其type属性为“password”,那么就是口令框。如果页面没有口令输入框,那么说明该页面可能是已经完成过登录的,就是登录后的页面,此时已经不需要再做自动登录处理;如果页面上含有口令输入框,那么说明该页面还没有登录,需要进行自动登录,进行下面的步骤。
3、填充用户名:遍历所有<input>元素,检查他们的id和name属性,如果这个属性与我们预先保存的用户名的标记一致,那么说明这个是我们需要填充的用户名输入框,那么,我们将预先设置的用户名值通过setAttribute("value")方法设置到该页面元素中。
4、填充口令:遍历所有<input>元素,检查他们的type属性,如果其type属性为“password”,那么就是口令框,那么,我们将预先设置的口令值通过setAttribute("value")方法设置到该页面元素中。
5、查找其他需要填充的输入内容(例如:单选钮、复选框):遍历所有<input>元素,检查他们的id和name属性,如果这个属性与我们预先保存的准备填充的内容的标记一致,那么说明这个是我们需要填充的输入内容,那么,我们将预先设置的输入内容通过setAttribute("value")方法或者put_checked()方法设置到该页面元素中。
6、找到登录按钮:如果我们预先存储的登录按钮,是点击一个图片,那么我们遍历所有的<image>元素;如果我们预先存储的登录按钮,是点击一个<button>元素,那么我们遍历所有的<button>元素;检查他们的id和name属性,如果这个属性与我们预先保存的登录按钮的标记一致,那么说明这个是我们需要模拟点击的按钮;如果我们预先存储的登录按钮,是点击一个<submit>元素,那么我们遍历所有的<input>元素,检查他们的type属性,如果其type属性为“submit”,那么就是我们需要模拟点击的按钮。
7、模拟点击:在获得登陆按钮元素后,通过IHTMLElement接口的click()方法,我们就可以实现模拟点击;调用此方法后,页面会执行登录过程。
一般传统的WEB页面,在设置onClick事件时,都是静态直接写到控件的属性中的,例如:<INPUT type=”button” id=”sub” onClick=”doSubmit()”>。此时我们在BHO中当页面加载完成后,我们可以找到该按钮,并且调用该按钮的click()方法,就可以使doSubmit()函数运行,达到自动登录的效果。
随着MVC(Model View Controller, 模型 视图 控制器)开发框架的流行,在WEB页面中,页面元素的处理事件经常是用Java Script(一种让网页更加生动的脚本语言)后绑定的,即:当页面加载完成后,触发Java Script函数,该函数找到相应的按钮元素,设置它的onClick事件;那么在页面中,静态的HTML(HyperText Markup Language 超文本标记语言)往往写为:<INPUT type=”button” id=”sub”>,没有相应的onClick响应函数,此时在BHO中,当页面加载完成后,我们调用按钮的click()方法,模拟按钮单击事件的执行,但此时按钮的onClick事件还未设置,所以会触发失败。
发明内容
本发明的目的在于提供一种BHO中对Web页面元素后绑定事件的触发方法,解决了在后绑定事件的情况下模拟失败的问题,可以让BHO组件在上述这种事件后绑定的情况下也能成功调用相应函数,克服现有方法在页面元素事件后绑定时,无法模拟的缺陷,使得无论是静态的HTML脚本,还是利用Java Script动态生成的脚本,都可以被正确的执行。
本发明的上述目的通过以下技术方案实现:
BHO中对Web页面元素后绑定事件的触发方法,在发现需要执行的事件是个后绑定事件时,利用在页面嵌入定时脚本,由定时脚本定期检查是否相应事件已被设置,当发现事件已被设置时,由脚本调用相应事件;达到无论在什么情况下都可以使希望的事件能正确执行的目的,其具体步骤如下:
1. BHO拦截页面加载完成事件;
2. 分析页面内容,并进行相应处理;
3. 利用WEB页面元素特征(例如:name 或 id)找到该元素;
4. 根据DOM(Document Object Model 文件物件模型)对象函数,获得该元素的相应属性(例如:onClick)值;
5. 如果该属性有值,即需要调用的函数,那么调用该函数,流程结束;
6. 如果该属性没有值,那么生成延时脚本SDelay:
a) 生成脚本定时器Time1,该脚本定时器定时(例如:1秒)执行定时函数fnTime;
b) 生成定时函数fnTime,该函数为脚本函数(例如:java Script或 VB Script等);
c) 定时函数fnTime中,利用WEB页面元素特征(例如:name 或 id)找到相应元素;
d) 判断相应属性是否有值,如果没有值,则继续等待下次定时时间到;
e) 该相应属性如果有值则调用该函数;
f) 调用完毕,销毁定时器Time1,结束;
7. 将该套脚本SDelay嵌入当前页面内容,设置为在页面加载完成后,被IE浏览器执行。
本发明的有益效果在于:让BHO组件在页面元素响应事件后绑定的情况下也能成功执行相应函数,克服了现有方法在页面元素事件后绑定时,无法模拟的缺陷,使得无论是静态的HTML脚本,还是利用Java Script动态生成的脚本,都可以被正确的执行,实用性强。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为本发明的流程示意图。
具体实施方式
下面结合附图进一步说明本发明的详细内容及其具体实施方式。
参见附图1所示,该具体实施例是对某网站的登录页面,进行自动登录,会自动填充已注册的用户名和口令并模拟点击“登录”按钮。
1. BHO拦截DISPID_DOCUMENTCOMPLETE事件,开始处理;
2. 分析页面内容,发现页面加载完毕,并且是需要登录的网站,那么填充相应的用户名和口令;
3. 根据登录按钮的id,获得该登录按钮IHTMLElement对象spEleSubmit;
4. 调用spEleSubmit->getAttribute函数,获得该登录对象的"onclick"属性值vOnClick;
5. 如果vOnClick有值,那么调用spEleSubmit->click()方法,流程结束;
6. 如果vOnClick没有值,那么生成延时脚本SDelay:
a) 通过setInterval('OnTimeClick()', 1000);")生成脚本定时器ClickInterval,该脚本定时器定时每隔1秒执行OnTimeClick();
b) 编写OnTimeClick()函数。
c) 在定时函数OnTimeClick()中,通过document.getElementById ()获得按钮对象targetItem;
d) 判断targetItem. click是否为空,如果为空,则结束函数,继续等待下次定时时间到;
e) 如果targetItem. Click不为空,那么调用targetItem. Click()函数。
f) 调用完毕,通过clearInterval(yyqClickInterval);销毁定时器,结束;
7. 通过insertAdjacentHTML(BSTR(L"afterEnd"), SDelay);将该套脚本嵌入当前页面内容,设置为在页面加载完成后,被IE浏览器执行。
以上所述仅为本发明的优选实例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1. 一种BHO中对Web页面元素后绑定事件的触发方法,在发现需要执行的事件是个后绑定事件时,利用在页面嵌入定时脚本,由定时脚本定期检查是否相应事件已被设置,当发现事件已被设置时,由脚本调用相应事件;达到无论在什么情况下都可以使希望的事件能正确执行的目的,其具体步骤如下:
(1)、BHO拦截页面加载完成事件;
(2)、分析页面内容,并进行相应处理;
(3)、利用WEB页面元素特征找到该元素;
(4)、根据DOM对象函数,获得该元素的相应属性值;
(5)、如果该属性有值,即需要调用的函数,那么调用该函数,流程结束;
(6)、如果该属性没有值,那么生成延时脚本SDelay:
a)、生成脚本定时器Time1,该脚本定时器定时执行定时函数fnTime;
b)、生成定时函数fnTime,该函数为脚本函数;
c)、定时函数fnTime中,利用WEB页面元素特征找到相应元素;
d)、判断相应属性是否有值,如果没有值,则继续等待下次定时时间到;
e)、该相应属性如果有值则调用该函数;
f)、调用完毕,销毁定时器Time1,结束;
(7)、将该套脚本SDelay嵌入当前页面内容,设置为在页面加载完成后,被IE浏览器执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210044931.2A CN102637194B (zh) | 2012-02-27 | 2012-02-27 | BHO中对Web页面元素后绑定事件的触发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210044931.2A CN102637194B (zh) | 2012-02-27 | 2012-02-27 | BHO中对Web页面元素后绑定事件的触发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102637194A true CN102637194A (zh) | 2012-08-15 |
CN102637194B CN102637194B (zh) | 2013-10-02 |
Family
ID=46621588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210044931.2A Active CN102637194B (zh) | 2012-02-27 | 2012-02-27 | BHO中对Web页面元素后绑定事件的触发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102637194B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699840A (zh) * | 2013-12-12 | 2014-04-02 | 北京奇虎科技有限公司 | 网页劫持的检测方法和装置 |
CN105574043A (zh) * | 2014-10-17 | 2016-05-11 | 中国移动通信集团公司 | 一种Web应用的前端页面的处理方法及装置 |
CN106549920A (zh) * | 2015-09-21 | 2017-03-29 | 华为终端(东莞)有限公司 | 登录信息输入方法、登录信息保存方法及相关装置 |
CN108089856A (zh) * | 2016-11-22 | 2018-05-29 | 北京国双科技有限公司 | 一种页面元素的监听方法及装置 |
CN109218799A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 安卓电视快速切换高清图的方法、存储介质、设备及系统 |
CN109359258A (zh) * | 2018-09-14 | 2019-02-19 | 四川长虹电器股份有限公司 | 一种自动触发浏览器动作的系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1700644A (zh) * | 2004-05-22 | 2005-11-23 | 乐金电子(中国)研究开发中心有限公司 | 一种用于网站自动登录的移动通信终端及其方法 |
CN1750713A (zh) * | 2005-10-20 | 2006-03-22 | 中国移动通信集团公司 | 自动登录业务的方法 |
US20080140703A1 (en) * | 2001-08-28 | 2008-06-12 | Zondervan Quinton Y | Method for sending an electronic message utilizing connection information and recipient information |
CN101976260A (zh) * | 2010-11-04 | 2011-02-16 | 上海银杏界信息科技有限公司 | 一种可视化标签及使用其生成网页的方法 |
-
2012
- 2012-02-27 CN CN201210044931.2A patent/CN102637194B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080140703A1 (en) * | 2001-08-28 | 2008-06-12 | Zondervan Quinton Y | Method for sending an electronic message utilizing connection information and recipient information |
CN1700644A (zh) * | 2004-05-22 | 2005-11-23 | 乐金电子(中国)研究开发中心有限公司 | 一种用于网站自动登录的移动通信终端及其方法 |
CN1750713A (zh) * | 2005-10-20 | 2006-03-22 | 中国移动通信集团公司 | 自动登录业务的方法 |
CN101976260A (zh) * | 2010-11-04 | 2011-02-16 | 上海银杏界信息科技有限公司 | 一种可视化标签及使用其生成网页的方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699840A (zh) * | 2013-12-12 | 2014-04-02 | 北京奇虎科技有限公司 | 网页劫持的检测方法和装置 |
CN105574043A (zh) * | 2014-10-17 | 2016-05-11 | 中国移动通信集团公司 | 一种Web应用的前端页面的处理方法及装置 |
CN105574043B (zh) * | 2014-10-17 | 2019-10-25 | 中国移动通信集团公司 | 一种Web应用的前端页面的处理方法及装置 |
CN106549920A (zh) * | 2015-09-21 | 2017-03-29 | 华为终端(东莞)有限公司 | 登录信息输入方法、登录信息保存方法及相关装置 |
CN108089856A (zh) * | 2016-11-22 | 2018-05-29 | 北京国双科技有限公司 | 一种页面元素的监听方法及装置 |
CN109218799A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 安卓电视快速切换高清图的方法、存储介质、设备及系统 |
CN109218799B (zh) * | 2017-07-01 | 2021-04-27 | 武汉斗鱼网络科技有限公司 | 安卓电视快速切换高清图的方法、存储介质、设备及系统 |
CN109359258A (zh) * | 2018-09-14 | 2019-02-19 | 四川长虹电器股份有限公司 | 一种自动触发浏览器动作的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102637194B (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102637194B (zh) | BHO中对Web页面元素后绑定事件的触发方法 | |
CN106126249B (zh) | 一种在前端实现行为、数据、视图联动的方法及系统 | |
US8924943B2 (en) | Browser emulator system | |
JP5511845B2 (ja) | マークアップ言語を通してクライアント・ブラウザ状態のサーバ側ロギングを遂行するための方法 | |
CN103856493B (zh) | 跨域登录系统及方法 | |
CN107688529B (zh) | 组件调试方法和装置 | |
US10362089B1 (en) | Methods and systems for dynamically generating and reusing dynamic web content | |
CN102143016B (zh) | 网站自动化测试方法和系统 | |
CN107729385A (zh) | 一种采集动态网页完整数据内容的方法 | |
CN104267944A (zh) | 一种基于Spring的MVC模式优化系统 | |
CN101876897A (zh) | 用于在Web浏览器上处理Widget的系统和方法 | |
CN106406851A (zh) | 一种网页截图方法、系统 | |
CN105556505A (zh) | 遗产系统 | |
CN110516139A (zh) | 爬虫系统及方法 | |
CN103902534A (zh) | 一种网页程序触发本地操作的方法和装置 | |
CN113296653A (zh) | 一种仿真交互模型构建方法、交互方法及相关设备 | |
TW201441837A (zh) | 用戶控制項載入系統及方法 | |
US10728095B2 (en) | Client-configured server class tracing to a configurable threshold | |
CN106528118A (zh) | 一种模态和非模态窗口在浏览器中兼容性的解决方法 | |
CN104834594B (zh) | web系统测试方法及装置 | |
CN111880789A (zh) | 页面渲染方法、装置、服务端和计算机可读存储介质 | |
Losada et al. | Efficient execution of web navigation sequences | |
Tao et al. | An Approach to Mobile Application Testing Based on Natural Language Scripting. | |
CN103885988A (zh) | 输出内容的方法及装置、内容输出系统 | |
Hernandez et al. | A Meta-model to Support Regression Testing of Web Applications. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |