Autoit3获取IE网页DOM对象2
当你动手编写Web应用自动操作脚本的时候,你会发现有一部分DOM对象对应的HTML元素并没有使用Id或者Name属性,显然已经不能使用_IEGetObjById或_IEGetObjByName函数获取此类对象了。这时,我们可以首先获取网页中同类对象的集合,然后再根据HTML元素所使用的属性进行匹配。为了简化脚本,提高效率,最后我们将编写一个新的自定义函数来处理类似情况。
工具/原料
IE10
Autoit3
1.通过其它属性获取网页DOM对象
1、; 通过HTML元素标签获取对应的DOM对象集合。; 获取网页中所有 a 标签对应的对象。Local $oObjects = _IETagNameGetCollection($oIE, "a")
2、; 遍历对象集合,通过href属性匹配对象。For $oObject In $oObjects If ($oObject.getAttribute("href") = "http://music.baidu.com")Then MsgBox($MB_SYSTEMMODAL, "蟒加加", "对象已匹配!") EndIfNext
3、; 完整代码; 包含IE邢赳剁曛管理及消息框常量库文件#include <IE.au3>#include <MsgBoxC泠贾高框onstants.au3>; 创建IE对象并转到百度主页Local $oIE = _IECreate("http://www.baidu.com"); 获取网页中所有a标签对应的对象。Local $oObjects = _IETagNameGetCollection($oIE, "a"); 遍历对象集合,通过href属性匹配对象。For $oObject In $oObjects If ($oObject.getAttribute("href") = "http://music.baidu.com") Then MsgBox($MB_SYSTEMMODAL, "蟒加加", "对象已匹配!") EndIfNext
自定义函数_IEGetObjByAttr
1、#cs 函数:_IEGetObjByAttr 功能:通过属性获取对象。 参数: $oObject:InternetExplorer.Application 对象变量, 窗口或框架对象。 $sTagName:HTML标签名称(例如 A,IMG,TR等等)。 $sAttr:HTML元素的属性名称。 $sAttrValue:HTML元素的属性值。 返回值: 成功:返回已匹配的网页DOM对象。 失败:@error 设置 为非 0 值。 @error: 3 ($_IEStatus_InvalidDataType) - 无效数据类型 7 ($_IEStatus_NoMatch) - 没有匹配#ce
2、IEA.au3完整代码的下载地址:http://pan.baidu.com/s/1dDlJ3rF下载后另存至你的代码目录中。
3、; 使用示例:; 包含I苇质缵爨E管理及消息框常量库文件、IEA.au3文件#include <IE.au3>#include <MsgBoxConstants.au3>#include "IEA.au3"; 创建IE对象并转到百度主页Local $oIE = _IECreate("http://www.baidu.com"); 通过属性获取对象。Local $oObject = _IEGetObjByAttr($oIE, "a", "data-id", "99")If IsObj($oObject) Then MsgBox($MB_SYSTEMMODAL, "蟒加加", "对象已匹配!")Else MsgBox($MB_SYSTEMMODAL, "蟒加加", "对象未匹配!")EndIf