发明内容
本发明所要解决的技术问题是提供一种进行页面交互的方法,以减少脚本文件更新带来的工作量。
本发明还提供了一种进行页面交互的装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本发明公开了一种进行页面交互的方法,包括:
访问网页并触发该网页的导航完成事件;
响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可向预设方向滚动;
若是,则启动对所述页面中表单页面元素的查找,并进行表单元素的填写或保存操作。
优选的,所述导航完成事件由IE内核生成。
优选的,所述响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可以向预设方向滚动的步骤包括:
响应于所述导航完成事件,调用页面元素操作指针;
所述页面元素操作指针按照预设频率,向当前访问页面的页面元素发送向预设方向滚动的指示信息;
若返回滚动成功的信息,则判定当前访问页面的滚动条可以向预设方向滚动。
优选的,所述预设方向为当前访问页面的左方、上方、右方或下方。
优选的,所述调用页面元素操作指针的步骤包括:
初始化浏览器操作指针;
所述浏览器操作指针调用get_Document函数,获得页面操作指针;
所述页面操作指针用get_body函数,获得页面元素操作指针。
优选的,所述启动对页面中表单页面元素的查找,并进行表单元素的填写或保存操作的步骤包括:
遍历查找页面中对应的表单页面元素,获取表单页面元素的名称;
判断浏览器端是否保存有当前访问页面的所述表单页面元素名称对应的信息;
若是,则将所述信息依据所述表单页面元素名称填写在对应的网页元素中;
若否,则在浏览器侧,保存当前访问页面中的所述表单页面元素名称及其所对应的由用户输入的信息。
优选的,所述表单页面元素包括:网页Form元素中的Input输入控件和/或TextArea控件。
优选的,所述方法还包括:
在触发所述导航完成事件后,初始化计时控件;
则所述页面元素操作指针按照预设频率,向当前访问页面的页面元素发送向预设方向滚动的指示信息的步骤包括:
所述计时控件按照预设频率向页面元素操作指针发送指示信息;
所述页面元素操作指针在接收到指针信息后,向当前访问页面的页面元素发送向预设方向滚动的提示信息。
优选的,所述页面元素操作指针通过调用doScroll函数,向当前访问页面的页面元素发送向预设方向滚动的指示信息。
本申请还提供了一种进行页面交互的装置,包括:
导航完成事件触发模块,用于访问页面并触发该网页的导航完成事件;
导航完成事件响应模块,用于响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可向预设方向滚动,若是,则执行表单页面元素查找模块;
表单页面元素查找模块,用于启动对所述页面中表单页面元素的查找,并进行表单元素的填写或保存操作。
优选的,所述导航完成事件由IE内核生成。
优选的,所述导航完成事件响应模块包括:
页面元素操作指针调用子模块,用于响应于所述导航完成事件,调用页面元素操作指针;
指示信息发送子模块,用于所述页面元素操作指针按照预设频率,向当前访问页面的页面元素发送向预设方向滚动的指示信息,若返回滚动成功的信息,则判定当前访问页面的滚动条可以向预设方向滚动。
优选的,所述预设方向为当前访问页面的左方、上方、右方或下方。
优选的,所述页面元素操作指针调用子模块包括:
初始化子单元,用于初始化浏览器操作指针;
页面操作指针获取子单元,用于所述浏览器操作指针调用get_Document函数,获得页面操作指针;
页面元素操作指针获取子单元,用于所述页面操作指针用get_body函数,获得页面元素操作指针。
优选的,所述表单页面元素查找模块包括:
表单元素遍历子模块,用于遍历查找页面中对应的表单页面元素,获取表单页面元素的名称;
判断子模块,用于判断浏览器端是否保存有当前访问页面的所述表单页面元素名称对应的信息,若是,则执行表单填写子模块,若否,则执行表单保存子模块;
表单填写子模块,用于将所述信息依据所述表单页面元素名称填写在对应的网页元素中;
表单保存子模块,用于在浏览器侧,保存当前访问页面中的所述表单页面元素名称及其所对应的由用户输入的信息。
优选的,所述表单页面元素包括:网页Form元素中的Input输入控件和/或TextArea控件。
优选的,所述装置还包括:
计时控件初始化模块,用于在触发所述导航完成事件后,初始化计时控件;
则所述指示信息发送子模块包括:
第一指示子单元,用于所述计时控件按照预设频率向页面元素操作指针发送指示信息;
第二指示子单元,用于所述页面元素操作指针在接收到指示信息后,向当前访问页面的页面元素发送向预设方向滚动的指示信息。
优选的,所述第二指示子单元中,所述页面元素操作指针通过调用doScroll函数,向当前访问页面的页面元素发送向预设方向滚动的指示信息。
与现有技术相比,本发明具有以下优点:
区别于现有技术在页面加载完成事件作为可以与页面进行交互的时机,本发明在页面导航完成后,当页面中的滚动条可以向预设方向滚动时,认为页面可以进行交互,并启动页面交互的操作,当页面上有大量图片,加载缓慢时,可以最早的执行页面操作任务,而不至于页面打开太长,用户操作后都跳转走了,还没能执行到任务;避免打开网页的时候,浏览器执行智能填表的功能太慢导致用户等待时间过长的问题。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
以下为方便、简洁地描述本发明的实施例起见,以个人电脑(PC)上的浏览器为平台进行本发明方案的描述。参照图1,基于个人电脑(PC)上的浏览器,示出了本发明的一种进行页面交互的方法实施例1的流程图,具体可以包括以下步骤:
步骤101、访问页面并触发该网页的导航完成事件;
在具体的实现中,浏览器访问某个网页URL时,浏览器依据访问网页的请求获取页面内容,并按照页面内容开始进行页面渲染,此时,IE内核会触发导航完成事件(NavigateComplete2事件),该事件的触发表明表明请求访问的链接已经打开。
步骤102、响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可向预设方向滚动,若是,则执行步骤103。
在本发明的一种优选实施例中,所述步骤102可以包括:
子步骤S11、响应于所述导航完成事件,调用页面元素操作指针;
子步骤S12、所述页面元素操作指针按照预设频率,向当前访问页面的页面元素发送向预设方向滚动的指示信息,若返回滚动成功的信息,则判定当前访问页面的滚动条可以向预设方向滚动。
触发导航完成事件之后,可以检测页面滚动条是否可以滚动,该滚动条不一定会显示在页面上,但实际是存在的。滚动条是否可以滚动可以通过操作页面元素来判断,具体而言,可以调用页面元素操作指针IHTMLElement,由该指针向当前访问页面的页面元素发送向某个方向滚动的指示信息,页面元素接收到指示信息后,会按照指示信息滚动,若滚动成功,则判定当前访问页面的滚动条可以向预设方向滚动。
优选的,预设方向可以为当前访问页面的左方、上方、右方或下方,由于页面渲染时,最先展示的是页面左上部分的内容,因此,在具体的实现中,预设方向可以为左方或是上方,以避免页面元素发生滚动后,使得当前访问页面向右或是向下滚动,影响页面的展示。
优选的,检测滚动条的操作可以按照预设的频率执行,例如每100毫秒进行一次检测。
具体的,所述子步骤S11可以包括:
子步骤S11-1、初始化浏览器操作指针;
子步骤S11-2、所述浏览器操作指针调用get_Document函数,获得页面操作指针;
子步骤S11-3、所述页面操作指针用get_body函数,获得页面元素操作指针。
在触发导航完成事件后,可以首选初始化浏览器操作指针(IWebBrowser2接口指针),该指针可以通过调用get_Document函数,来获取页面操作指针(IHTMLDocument2接口指针),页面操作指针可以取得页面的内容,在本申请中页面操作指针通过get_body函数可以进一步获取页面元素操作指针IHTMLElement,页面元素操作指针用于对页面元素进行操作。
具体的,所述页面元素操作指针可以通过调用doScroll函数(CComVariant(L″left″)),向当前访问页面的页面元素发送向预设方向滚动的指示信息,若返回滚动成功的信息,则判定当前访问页面的滚动条可以向预设方向滚动,页面处于可以交互的状态。
步骤103、启动对所述页面中表单页面元素的查找,并进行表单元素的填写或保存操作。
在本发明的一种优选实施例中,所述步骤103可以包括:
子步骤S21、遍历查找页面中对应的表单页面元素,获取表单页面元素的名称。
子步骤S22、判断浏览器端是否保存有当前页面当前访问页面的所述表单页面元素名称对应的信息,若是,则执行子步骤S23,若否,则执行子步骤S24。
子步骤S23、将所述信息依据所述表单页面元素名称填写在对应的网页元素中。
子步骤S24、在浏览器侧,保存当前访问页面中的所述表单页面元素名称及其所对应的由用户输入的信息。
判断页面处于可交互状态后,可以提取表单页面元素的名称,与当前页面进行信息交互。每次页面交互之后,可以将表单页面元素的名称,以及对应的用户输入的信息保存在浏览器端,便于下次使用时快速直接的提取。
因此,在每次进行页面交互时,可以首先遍历查找页面中对应的表单页面元素,获取表单页面元素的名称;然后判断浏览器端是否保存有当前访问页面的所述表单页面元素名称对应的信息;若有,则可以直接提取对应的信息,按照所述表单页面元素名称填写在网页元素中;若没有,则保存用户输入的表单页面元素名称,以及对应的用户输入的信息,当前访问页面,为了便于下次提取,可以进一步保存在浏览器端。
在具体的实现中,所述表单页面元素可以包括:网页Form元素中的Input输入控件和/或TextArea控件;其中例如Input输入控件的表单页面元素名称为:用户名,或者密码。
参考图2,示出了本发明的一种进行页面交互的方法实施例2的流程图,具体可以包括以下步骤:
步骤201、访问页面并触发该网页的导航完成事件。
步骤202、在触发所述导航完成事件后,初始化计时控件。
步骤203、响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可向预设方向滚动,若是,则执行步骤204。
在本发明的一种优选实施例中,所述步骤203可以包括:
子步骤S31、响应于所述导航完成事件,调用页面元素操作指针;
子步骤S32、所述页面元素操作指针按照预设频率,向当前页面当前访问页面的页面元素发送向预设方向滚动的指示信息,若返回滚动成功的信息,则判定当前页面当前访问页面的滚动条可以向预设方向滚动。
具体的,所述子步骤S32可以包括:
子步骤S32-1、所述计时控件按照预设频率向页面元素操作指针发送指示信息;
子步骤S32-2、所述页面元素操作指针在接收到指针信息后,向当前访问页面的页面元素发送向预设方向滚动的提示信息。
本实施例中,可以初始化计时控件,由计时控件控制页面交互的检测频率,具体而言,计时控件按照预设频率向页面元素操作指针发送指示信息,页面元素操作指针在接收到指针信息后,向当前访问页面的页面元素发送滚动提示信息。如果滚动条可以向预设方向滚动,判定该页面处于可交互状态,则可以清除定时器,在本次页面访问中不需要再进行检测。
步骤204、启动对所述页面中表单页面元素的查找,并进行表单元素的填写或保存操作。
综上所述,区别于现有技术在页面加载完成事件作为可以与页面进行交互的时机,本发明在页面导航完成后,当页面中的滚动条可以向预设方向滚动时,认为页面可以进行交互,并启动页面交互的操作,当页面上有大量图片,加载缓慢时,可以最早的执行页面操作任务,而不至于页面打开太长,用户操作后都跳转走了,还没能执行到任务;避免打开网页的时候,浏览器执行智能填表的功能太慢导致用户等待时间过长的问题。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图3,示出了本发明的一种进行页面交互的装置实施例1的结构框图,具体可以包括以下模块:
导航完成事件触发模块301,用于访问页面并触发该网页的导航完成事件;
导航完成事件响应模块302,用于响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可向预设方向滚动,若是,则执行表单页面元素查找模块;
表单页面元素查找模块303,用于启动对所述页面中表单页面元素的查找,并进行表单元素的填写或保存操作。
在本发明的一种优选实施例中,所述导航完成事件可以由IE内核生成。
在本发明的一种优选实施例中,所述导航完成事件响应模块可以包括:
页面元素操作指针调用子模块,用于响应于所述导航完成事件,调用页面元素操作指针;
指示信息发送子模块,用于所述页面元素操作指针按照预设频率,向当前访问页面的页面元素发送向预设方向滚动的指示信息,若返回滚动成功的信息,则判定当前访问页面的滚动条可以向预设方向滚动。
在本发明的一种优选实施例中,所述预设方向可以为当前访问页面的左方、上方、右方或下方。
在本发明的一种优选实施例中,所述页面元素操作指针调用子模块可以包括:
初始化子单元,用于初始化浏览器操作指针;
页面操作指针获取子单元,用于所述浏览器操作指针调用get_Document函数,获得页面操作指针;
页面元素操作指针获取子单元,用于所述页面操作指针用get_body函数,获得页面元素操作指针。
在本发明的一种优选实施例中,所述表单页面元素查找模块可以包括:
表单元素遍历子模块,用于遍历查找页面中对应的表单页面元素,获取表单页面元素的名称;
判断子模块,用于判断浏览器端是否保存有当前访问页面的所述表单页面元素名称对应的信息,若是,则执行表单填写子模块,若否,则执行表单保存子模块;
表单填写子模块,用于将所述信息依据所述表单页面元素名称填写在对应的网页元素中;
表单保存子模块,用于在浏览器侧,保存当前访问页面中的所述表单页面元素名称及其所对应的由用户输入的信息。
在本发明的一种优选实施例中,所述表单页面元素包括:网页Form元素中的Input输入控件和/或TextArea控件;其中例如Input输入控件的表单页面元素名称为:用户名,或者密码。
参考图4,示出了本发明的一种进行页面交互的装置实施例2的结构框图,具体可以包括以下模块:
导航完成事件触发模块401,用于访问页面并触发该网页的导航完成事件;
计时控件初始化模块402,用于在触发所述导航完成事件后,初始化计时控件;
导航完成事件响应模块403,用于响应于所述导航完成事件,按照预设频率检测所述页面中的滚动条是否可向预设方向滚动,若是,则执行表单页面元素查找模块;
表单页面元素查找模块404,用于启动对所述页面中表单页面元素的查找,并进行表单元素的填写或保存操作。
在本发明的一种优选实施例中,所述导航完成事件响应模块可以包括:
页面元素操作指针调用子模块,用于响应于所述导航完成事件,调用页面元素操作指针;
指示信息发送子模块,用于所述页面元素操作指针按照预设频率,向当前访问页面的页面元素发送向预设方向滚动的指示信息,若返回滚动成功的信息,则判定当前访问页面的滚动条可以向预设方向滚动。
在本发明的一种优选实施例中,所述指示信息发送子模块可以包括:
第一指示子单元,用于所述计时控件按照预设频率向页面元素操作指针发送指示信息;
第二指示子单元,用于所述页面元素操作指针在接收到指示信息后,向当前访问页面的页面元素发送向预设方向滚动的指示信息。
优选的,所述第二指示子单元中,所述页面元素操作指针可以通过调用doScroll函数,向当前访问页面的页面元素发送向预设方向滚动的指示信息。
由于所述装置实施例基本相应于前述图1和图2所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。因此本领域技术人员要明确的是,本发明的保护范围并不限于PC上的浏览器中的网页交互,仅是出于描述的简洁和方便而在本发明实施例中采用了PC上运行浏览器中的网页交互来进行描述。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种进行页面交互的方法,以及,一种进行页面交互的装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。