[易语言]E-APPLE网页操作更新至V3.32(已开源至V3.11)
E-APPLE网页操作类使用简要说明:
1、获取网页DOM:新建一变量,类型为HTMLDOM操作类,这里我们假定变量名为web.
WEB.初始化(窗口句柄,真,真)
第一个参数为网页所在窗口句柄,如果该窗口不为IES句柄,则会自动枚举其子窗口中的IES窗口,取第一个,如果没有则初始化失败.
第二个参数为是否穿透框架,主要用于多框架网页,当然穿透框架会耗费一定时间的.
第三个参数为是否等待所有网页就绪,为真的时候会等到每一个框架网页都就绪后才返回.

2、获取元素:web.元素_取对象(表达式,框架索引,完全匹配,模糊匹配)
参数一:元素匹配表达式,下边我专门介绍下如何建立并使用它
参数二:元素所在框架索引号,这个索引号可以通过枚举查看框架文档来了解,如web.取所有网页(输出网页DOM数组),这里就知道索引号了,框架索引也许很少使用,但如果指定它会大大提高速度哦.至少可以提升好几倍.
参数三:是否完全匹配.我们在表达式中一般会有很多属性,是需要全都都匹配成功才算成功呢还是任意匹配成功一个就算成功呢
参数四:是否进行模糊匹配,一般用于文本属性
3、表达式的建立与使用
基本标志:
tag:代表HTML标签
id:代表元素ID名
name:代表元素NAME
type:代表元素附加类型
index:代表索引,一般是指返回元素集合中的第XX个元素
下边演示一下各类表达式:
取ID名为test的元素:
id=test
取NAME为test的元素:
name=test
取DIV标签集合:
tag=div
取DIV标签集合的第3个元素:
tag=div,index=3
取第2个文本框:(这里注意本例是假设我们不知道文本框类型是什么的前提下,比如文本框,密码框,多行文本框)
tag=input,type=text|password|textear,index=2
取按钮文本为"百度一下"的按钮:(假设我们不知道这个按钮是什么类型)
tag=input,type=button|submit|reset|image,value=百度一下
当然也可以这样
tag=input,value=百度一下 (这种方法容易引发错误,比如正好有个文本框也为百度一下,就有问题了,所以还是推荐使用上边的方法)
取某个DIV元素,该元素可能为文本一,也可能为文本二(有时同一个元素在不同的环境下会有不同的属性值)
tag=div,outerText=文本一|文本二 (注意:匹配多属性值时,以|号分隔各属性值)
取宽度为100的图片
tag=img,width=\d100 (注意,值为数值时前边加一个\d,其实现在可以取消这个规则了,为了省事,暂时保留吧)
取第2个可编辑的BODY框
tag=body,isContentEditable=true,index=2
这里强调一点,表达式也可以匹配数值属性与逻辑属性的.
再说说表达式匹配的优先顺序:
表达式中存在id或name时自动忽略其它所有属性.
index只匹配返回有集合的情况,比如返回tag集合,或者匹配结果有多个的时候index也会产生作用
任一匹配时会按照表达式顺序进行匹配,所以希望优先匹配的属性一定要放在最前边.
4、希望读取或修改元素属性值
在本模块中提供了如元素_点击,元素_方法,元素_取属性,元素_置文本属性,元素_置数值属性,元素_取代码,元素_取文本等方便元素操控的功能模块,同时还提供了可独立使用的版本,前边加个"网页"二字就是独立使用版本了.
举例:web.元素_置文本属性("id=u","value","12345678")
本模块绝大多数功能都可独立使用,不用依赖类.
好消息,E-APPLE网页操作模块提前开源了,精易论坛中与易语言官方论坛中均已公布.
V3.32 DOM操作功能进行分解,不再全部集成在类的内部,允许独立使用;表达式进一步优化,实现一个表达式匹配元素,含tag,id,name,index,type及其它属性,允许进行全部匹配或任意匹配,也允许模糊匹配或精确匹配;HTMLDOM类内部进行精简,核心功能全部独立出来了,这样更为灵活.
亮点:一条表达式匹配任意元素且不影响效率.
V3.3 不建议旧版用户直接升级,本版本删除许多傻瓜功能,会导致旧版傻瓜功能用不了.
本版本就HTMLDOM类已经完爆精易VIP了,可喜可贺,哈哈.
本版增加了框架网页刷新功能,这样就可以仅刷新某一个框架来节省时间提高效率.注意:这里说的刷新不是网页刷新,而是DOM刷新.
元素_取对象及元素_取所有元素增加了框架索引参数,这样就可以指定框架取元素了,大大提高时间.当然也可以不指定,进行遍历,虽然这样受的影响有一点点,但并不明显的.
增加了ID或NAME取元素功能,解决了原来JS文档不能使用ID取元素的难题.这样元素获取的方式就可以通过ID或NAME及通过表达式来获取两种方式了,更为灵活.
增加置当前网页功能,这其实就是之前的控制框架功能,旧版控制框架功能已取消,作用是当某框架设为当前操作网页
增加了部分IE选项修改功能,增强兼容性.
本版最大特点是加入刷新框架DOM功能后使元素匹配效率得到大大提升.
V3.28 优化网页窗口定位逻辑,增加进程创建后等待到进入空闲状态才返回功能,增加配置文件操作及一些系统操作功能.
V3.27 进一步优化模块稳定性,目前准确性在所有测试环节均百分百准确.效率得到一定提升.
V3.26 完善了对话框操作功能,可以自动点击弹出窗口.(因时间关系暂未解决了FLASH上传与文件上传的BUG(),对话框操作的完善已经足以解决这些BUG)
对元素的匹配逻辑进行了深度优化.
对智能刷新进行了修正.
V3.25下载地址:http://www.kuaipan.cn/file/id_2739493350634852.htm
V3.25其实没加入太多新功能,主要是将核心进行了更换,取元素的算法进行了优化调整,更为灵活,而且针对框架的操作也更为灵活了。
新版中核心功能元素_取对象的用户如下:元素_取对象("input",“type=text|password|textear,id=u,name=u,index=1”,,假)
元素_取对象(HTML标签,属性匹配表达式,索引,是否全部匹配)
这是整个模块的核心,经过了非常多的测试,非常稳定可靠。
解释下参数:
HTML标签:如a,div,img,span,form,input,select之类的HTML标签,为空则代表所有元素与后边的表达进行匹配
属性匹配表达式:支持多属性匹配,间隔符为“,”,多属性任意匹配还是全部匹配由最后一个参数决定。这里值得注意一点,本参数中如果有type属性一定要放在第一位,type支持多类型,间隔符为"|"。且表达式还支持直接用index来代表索引来用,这就意味着后边的索引参数都是多余的,但为了兼容,我还是作了保留。
索引:默认为1,因为我们使用的标签与属性进行匹配,所以很可能得到的结果不是唯一,这里就可以通过指定索引来取对应元素。
是否完全匹配:如果为真则必须满足所有属性才能匹配成功,如果为假,任一属性匹配成功即可。
这个用法很容易让人搞混,现作一下说明:
1、表达式中含type的一定要将type放在最前边,不管是否含有其它属性,首先会筛选出与type匹配的元素。
2、index是第二个有优先权的属性,如果其它属性中有index则会返回与index相对应的元素,如果没有对应的索引则返回空。
3、有其它属性则按是否完全匹配来进行任意匹配或者完全匹配。
4、如果有type又有其它属性,且其它属性无匹配结果的则返回空。
框架操作的几个方法:
1、控制框架(索引),-1代表可控制所有框架,1代表根网页,其它的则是对应的框架
2、取网页文档(索引),参数可空,默认取出当前控制索引的网页文档
3、取所有网页文档(网页文档数组),可将根网页及所有框架网页的DOM取出到数组中来,供操作。
修正了一些BUG:
1、网页窗口定位的两个方法进行了修正完善。
2、窗口_置焦点的错误进行了修正。
这次更新核心换得很彻底,对穿透框架,跨域更为准确,而且可以任意调整欲操作的框架对象,加入了智能刷新功能,强制就绪功能也得到了优化,而且支持JS生成的DOM操控,还加入了根据HTML代码创建DOM及根据文档获取IWEBBROWER2的功能。
虽然这次换得很彻底,但3.14版的DOM操作这块的东西大部分能用,兴有少数几个过时的功能已经被取消。
这次只完成了核心 内容,估计还有不少东西要完美,慢慢来吧。
V3.14版对根据进程ID定位窗口功能进行了完善,保证百分百正确(原存在进程打开过快导致控件未加载完成从而无法定位的情况,尤其在旧电脑上特别明显),增加了网页强制就绪功能(解决某些网页因为网速过慢导致不能正确填表的情况),增加了根据关键字定位窗口功能,不但可以根据进程ID及关键字定位,也可以仅根据关键字进行定位,这对登陆后打开新窗口的情况特别实用;已修正组合框置现行选中项根据文本选择的情况时索引不正确的问题。
备注:V3.14版其实完美解决了因网速问题造成网页未能完全加载而导致偶尔无法正确操作网页的情况,同时也解决了因为机器配置或者系统软件原因造成的打开软件过慢导致无法正确查找或定位窗口的情况,这两个功能在实际应用中非常有用,尤其是企业应用,要求百分百稳定的情况。
V3.12版对初始化进行了完善,保证加载的文档可以正确使用,另增加了网页_查找关键字及网页_就绪判断功能,其中网页_就绪判断功能还可以在检测到未就绪的情况下自动刷新网页,直到成功或超时.
V3.1版应网友要求加入DIV与SPAN元素操作功能.
V3.0版加入网页缓存提取功能,完善多线程下载功能,新增修改文档浏览模式功能,并对兼容所有网站的方法进行了重命名.
增加了IE_自定义UA功能,已经修复不支持易内部控件的小BUG.
V2.9版对进行大量的重构,其中最重要的是元素_取对象的方式发生了彻底变化,达到百分百成功的效果,同时加入了任意单个或多个属性比较的扩展功能,让操作更为灵活,本次代码精简非常多,同时增加了如转换功能在内的一些常用功能.
V2.83版对一些不常用功能进行了精简,提高API的重用程度,同时大部分API进行了公开,可直接使用,完善了非常多的备注信息,使用起来更方便,对程序结构也进行了优化.
V2.82版对大部分专用模块时行了集成,进行了一次代码优化,加入了内存优化,文件磁盘操作,位图操作,文件及字节集操作等常用功能.
V2.8版加入BODY输入框操作,FLASH操作,网页对象操作,网页对话框通用操作功能,并加入并完善窗口\进程\线程相关功能.
V2.7版支持框架跨域,另增加文档_置设计模式,元素_可编辑等新功能,完善元素_取对象,元素_取所有元素,框架_取数量,框架_取对象,重写文本流,组合框_添加项,改善后的功能修改网页源码后仍可被浏览器正常解析,就如同正常网页一样.另已增加枚举所有节点功能,但因无多大用处,未开放.
V2.6版增加文档模式属性操作,完善初始化功能(增加是否等待完成),增加网页后台键盘鼠标模拟功能,从而解决特殊网页的操作问题.
V2.5.2版增加组合框_添加项、组合框_移除项、节点控制功能(包括创建元素节点、属性节点、文本节点、数据节点、注释节点;添加节点等功能);增加了IE兼容视图控制功能;完善了单选框、复选框、组合框的模块功能;对元素_取对象进行了进一步优化;修复按钮_取对象与表单_取对象偶尔会失败的BUG.
本版本完全可解决AJAX网页带来的一系列操作难题.
V2.3版将网页访问改为XMLHTTP实现,并对POST与GET进行了细化分类,POST支持COOKIES,自定义协议头,重定向,GET获取时支持异步读取,此功能还需要进一步完善。
对网址_系列方法进行优化,尤其是下载方面功能,可以非常快速的进行比较;增加了批量下载功能、完整校验、返回协议及筛选功能。
增加正则表达式类
增加线程池功能
增加多种网页访问方法,功能非常全面,主模块未使用这些方法,备用。这个要感谢易友提供的源码。
本版本已经加入XMLDOM理念,后续将完善关于XMLDOM操作的功能,形成易界最强大的WEB类操作模块。
V2.2.2版完善了网页截图、图片筛选、复选框操作及取网页图片位图数据功能。
网页截图现在已经可以实现任意滚屏截图了,经过测试,非常强大,而且适用范围更广。
值得说明的是本模块截图思路与光庆4.3完全不一样,它是使用第三方软件实现,原理是创建一个WEBBROWER,并设置其宽高为网页的宽高,在如C#之类语言中很容易实现,但在易中却较困难,所以光庆才使用了第三方软件实现,当然我没有贬低光庆的意思,因为我这模块都是出自光庆旧版模块的源码,这种思路有个缺点就是网页长度超过三万像素左右就会出问题,而且WEBBROWE最高长度为65535,所以它实际是有限制的,不能适应所有所有网页;为了解决这个问题,我考虑采用第二种思路,不断移动网页,并对每次移动进行截图,然后在内存中进行重组,这样就可以得到一个完整的网页图片了,不管你的网页有多宽多高,也不管你的显示窗口大小如何,都可以截出完整的网页截图,当然这个思路是有缺点的,一是这个窗口必须存在,二是需要滚屏次数越多,计算量就越大,速度当然也越慢了,不过综合平衡我还是觉得这个思路更能加强我对易语言的理解。
图片操作中关于批量操作的均加入了类型筛选功能(自动根据扩展名及返回协议类型比较,百分之百准确,而且支持多种类型组合),原仅有宽高筛选。
增加了复选框_取对象,非常灵活,同时扩展了复选框_选中的灵活性,所有复选框元素操作也都改由复选框_取对象来实现。
增加了图片_取位图数据,可将网页中图片取出为字节集,用于软件的同步显示,有了这个功能再配合元素_取所有元素可以轻易实现像网页图片保存专家之类软件了。
另增加网址_协议类型比较,网址_扩展名类型比较,下载_IE下载,下载_字节集下载,下载_普通下载,文本_首尾找文本,文本_正则找文本,网页_访问是否成功。
2.1版更新内容:
应网友要求增加网页_滚动及网页_截图功能
值得说明一下的是,这次加入的网页截图功能采用滚屏截图的方式实现,这样再长的网页也能截,不过这次我只完成了纵向滚动截图的功能哈,也就是说,如果网页太宽有可能会截不全,留到下个版本完善吧,嘿嘿
完善内容:
1、初始化去掉文档参数,仅保留句柄;加入强制刷新参数,可解决任何框架的操作问题。
2、元素_取对象及元素_取所有元素加入DOM的根节点作为基础节点,可解决DIV布局时部分元素取不到的BUG。
3、所有方法对ID、NAME、索引进行了整合简化,按钮增加了标题检索功能。
新增内容如下:
元素_点击、元素_置属性
网页_访问
网址_取文件名,网址_取扩展名,网址_取返回长度,网址_取协议文件类型,网址_取域名,网址_取端口,网址_取页面地址,网址_设COOKIE,网址_取COOKIE,网址_文件是否存在
验证码_读取
图片_取对象,图片_ 取所有图片,图片_ 取所有图片地址,图片_ 取宽度,图片_ 取高度,图片_ 取地址,图片_ 点击,图片_ 保存到本地,图片_ 取数量
网页_开始自动点击网页信息框,网页_停止自动点击网页信息框
框架_索引到名称
鼠标_消息,投递消息,窗口_取句柄,时钟_创建,时钟_销毁
文本_取左边,文本_取右边
时间_转换为GMT格式
经测试完全兼容HTMLDOM操作,部分兼容XMLDOM操作。
使用方法:
1、初始化技巧,普通初始化加入句柄参数就OK,有些框架网页网页出现不能操作的情况时就将强制刷新参数设为真即可。
2、本模块的核心其实就在于元素_取对象与元素_取所有元素,其它几乎所有功能都是源于它们的简化,下边我就重点介绍下元素_取对象的用法,元素_取所有元素的用法类似。至于其它那些什么表单、按钮、表格、图片等的使用方法就简单了,自己摸索下哈。
本模块所有关于元素检索的均可以穿透框架,百分之百成功。
元素_取对象的用法:
1、最简单的根据ID、名称取对象就仅使用第一个参数就OK了,其它不管。
2、有时我们并不知道或者元素根本就没有ID或者名称时,则使用元素标签作为第一个参数,如img,p,table,input,a等HTML元素标签,但这时一般会出现这个情况,出来的结果有多个,所以加入第二个参数索引就很有用了,检索出来的对象我们需要第几个,就写几就OK了。
3、有时我们需要将元素对象的检索范围进一步缩小,如INPUT标签就包括了文本框、复选框、按钮等,就连按钮都还要分普通按钮、提交按钮、复位按钮、图片按钮,所以第三个参数附加类型就起到了检索限制范围的作用,下边我举点例子:
检索ID或者NAME为“testid”元素为元素_取对象(“testid”)
检索第四个SPAN元素 元素_取对象(“span”,4)
检索第二个图形按钮元素_取对象("input",2,"image")
元素_取所有元素的使用方法类似,只是检索结果会放到参数中返回,是一个传参的对象数组,直接使用这个数组就OK了。
模块中提供了简化的功能,可以替你省掉很多事,比如按钮_点击(“ID/NAME/索引/标题”,按钮类型(为空表示所有按钮)),图片_取宽度(“ID/NAME/索引/地址”)等,具体的看模块参数说明,一目了然。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/3531.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
