lizhen 发表于 2013-3-1 08:46:35

[教程]教您取得无ID,无Name的网页元素。

在论坛经常看到一些问题,如“这个按钮怎么点击?”这类的。
我发现都是一些无ID,无Name的元素,
普通的有ID/Name元素,只要用getElementById或getElementsByName就可以
(使用“易语言网页操作类”模块,可以用
网页文档.取元素对象 (“ID或Name”, #元素标识类型_ID 或 #元素标识类型_名称) ,
使用“网页操作类_光庆版”模块,可以用
网页操作.对象_取xx对象 (网页操作.xx_取索引 (“Name或ID”)) 。
)

无ID,无Name,无ClassName,简称三无。
比如我们易语言论坛的Logo,一个典型的三无


它的代码是: 引用
<IMG src="images/wind/logo.png">

我们怎么取得呢?
这里在Name以后,又引进一个Name:TagName
什么是TagName:

引用
<a href="http://www.xxx.com">
<IMG src="http://www.xxx.com/xxx.jpg">
<INPUT class=w_btn value=" 发 布 " type=submit name=Submit>



上面加红加粗的就是TagName,可以理解成标签 (ps:不是易语言的标签组件-_-)
我们可以用“getElementByTagName”获取,
当然,很少有网页没有相同的TagName,
所以,我们应该用“getElementsByTagName”
这样取出来的不是一个元素,而是一堆元素,是一个元素集合,可以理解成数组,比数组麻烦,可以用length属性来取数目。

集合 = 对象.对象型方法 (“getElementsByTagName”, “IMG”) ' TagName是“IMG”。
.计次循环首 (集合.读数值属性 (“length”, ), 计次) ' 计次循环,一个一个的枚举
元素 = 集合.对象型方法 (“item”, 计次 - 1) ' item的第一个参数是索引,从0开始。
.如果真 (元素.读文本属性 (“src”, ) = “http://*****/images/wind/logo.png”) ' 如果src等于images/wind/logo.png,那么就是这个元素了。
元素.方法 (“click”, ) ' 点击
.如果真结束
.计次循环尾 ()


再来一个复杂点的,这个帖子的这种按钮,需要配合一点点文本操作,来判断它的“onclick”

<a href="javascript:void(0);" class="addFollow"><span class="addnew">+</span>加关注</a>

它的TagName是“a”
集合 = 对象.对象型方法 (“getElementsByTagName”, “a”) ' TagName是“a”。
.计次循环首 (集合.读数值属性 (“length”, ), 计次) ' 计次循环,一个一个的枚举
    元素 = 集合.对象型方法 (“item”, 计次 - 1) ' item的第一个参数是索引,从0开始。
    .如果真 (取两文本中间 (元素.读文本属性 (“onclick”, ), “App.followadd('”, “'”) = “1213452333”)
      ' 如果onclick中的一部分等于1213452333,那么就是这个元素了。
      元素.写属性 (“innerText”, “修改文本”) ' 修改文本
    .如果真结束
      
.计次循环尾 ()

以上的网页对象是怎么来的呢:
IES句柄 = 取网页句柄 (超文本浏览框1.取窗口句柄 ()) ' 取得Internet Explorer_Server的句柄
对象 = 取网页对象 (IES句柄) ' 取得网页文档document对象

使用“易语言网页操作类”模块,可以用
网页文档.取元素集合 (“IMG”) ' TagName ,
使用“网页操作类_光庆版”模块,貌似本身就是集合。

猫星人 发表于 2013-3-6 17:15:32

不错,很有用,支持一下了。。

axkf123 发表于 2013-5-3 18:17:59

回复 1# lizhen
不错,很有用,支持一下了。。
页: [1]
查看完整版本: [教程]教您取得无ID,无Name的网页元素。