aardio 官方社区

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 28714|回复: 19

分享:摸索了一下老大的自动点击超级连接

  [复制链接]

10

主题

52

回帖

326

积分

二级会员

积分
326
发表于 2011-7-8 00:53:07 | 显示全部楼层 |阅读模式
本帖最后由 叶城.HK 于 2011-7-8 00:53 编辑

要做一个测试程序,需要不断的的切换账号,就需要在每次换账号的时候点击“注销”连接。
可是目标系统有框架(topframe、leftframe、mainframe),所以摸索了一下老大的代码:

参看原帖子http://bbs.aardio.com/thread-191-1-1.html
直接用不成功,增加了框架参数。

clickLink = function(title,Tframe){//给函数一个连接名参数,框架名字。
    for(k,ele in wb.eachLinks(Tframe) ){//遍历框架所有超链接
        if(string.find(ele.innerHTML,title )){//如果发现超链接名
          ele.click();//自动点击
          break;
      }
  }
}

//引用
……
clickLink (“注销”,“topframe”);
……
//通过测试。



27

主题

646

回帖

4138

积分

超级版主

积分
4138
发表于 2011-7-8 06:36:06 | 显示全部楼层
本帖最后由 quicker 于 2011-7-8 06:36 编辑

其实,一句代码就可以:

wb.queryEles (
    parent = "topframe"; //框架名字
    innerHTML = "注销" ;  
).click();

48

主题

542

回帖

3328

积分

五级会员

积分
3328
发表于 2011-7-8 09:00:12 | 显示全部楼层
感谢分享以后肯定会用到

10

主题

52

回帖

326

积分

二级会员

积分
326
 楼主| 发表于 2011-7-8 10:22:56 | 显示全部楼层
本帖最后由 叶城.HK 于 2011-7-8 10:27 编辑
quicker 发表于 2011-7-8 06:36
其实,一句代码就可以:

wb.queryEles (

如果操作频繁,你还是需包装成function吧,有点继续想问的感觉,可是水平有限不知道怎么问:关于这两方法,大家可以说多点吗?


10

主题

52

回帖

326

积分

二级会员

积分
326
 楼主| 发表于 2011-7-8 10:29:25 | 显示全部楼层
这样说对吗?
queryEles 是比较万能。

for(k,ele in wb.eachLinks())……
如果用了eachlinks就局限在连接?

暂不考虑效率,我想是影响极小。

52

主题

1268

回帖

7276

积分

荣誉会员

积分
7276
发表于 2011-7-8 13:58:57 | 显示全部楼层
方法许多的,如for(k,ele in wb.eachAll("节点标签")){。。。}

wb.queryEles 是新函数,还不那么熟练,貌似很灵活样子

27

主题

646

回帖

4138

积分

超级版主

积分
4138
发表于 2011-7-8 14:23:31 | 显示全部楼层
本帖最后由 quicker 于 2011-7-8 14:24 编辑
qqmmcc 发表于 2011-7-8 13:58
方法许多的,如for(k,ele in wb.eachAll("节点标签")){。。。}

wb.queryEles 是新函数,还不那么熟练,貌 ...

wb.queryEles() 的用法其实很简单。
他的参数就是一个table,可以指定一个或多个键值对。
键就是你要匹配的属性名称,与ele的成员属性完全一致。

唯一需要注意的是parent这个可选键指定容器(在这个容器里查找),
可以指定一个ele对象。也可以指定一个框架名称,如果不指定就是指的wb.getDoc()

比较有意思的是,无论返回值是一个ele,还是n多个ele.
你都可以象一个ele那样去操作。




例如:

var qEles = wb.queryEles (
    parent =
"topframe"; //框架名字
    innerHTML = "注销" ;  
)
qEles.click();
//他会把所有符合条件的ele对象都点击一次



而且他支持两种匹配方式,即可以直接比较文本,
也可以使用模式匹配语法,完全自动实现,你在使用的时候不需要考虑太多细节。

wb.queryEles() 部分借鉴了jQuery() 的长处,
但是丢弃了jQuery()过多契约式用法的缺陷。

少用循环语句,增强可复用性,是从写代码设计代码的一个跨越。



点评

同意: 5.0 真棒: 5.0
同意: 5
。。。。果然强大。。。。。确实和jquery有点像。  发表于 2011-11-17 15:07
同意: 5 真棒: 5
高手中的高手,受教了  发表于 2011-10-10 23:14
真的是非常好。复杂问题简单化了。  发表于 2011-9-19 22:22
同意: 5 真棒: 5
  发表于 2011-7-15 14:33
谢谢 会试一试新函数  发表于 2011-7-8 14:44

10

主题

52

回帖

326

积分

二级会员

积分
326
 楼主| 发表于 2011-7-8 17:10:29 | 显示全部楼层
本帖最后由 叶城.HK 于 2011-7-8 17:11 编辑

少用循环语句,增强可复用性,是从写代码到设计代码的一个跨越。

谢谢 quicker
感觉你回答正式我想问的。今晚要好好看看queryEles 的具体实现!

27

主题

646

回帖

4138

积分

超级版主

积分
4138
发表于 2011-7-8 22:38:19 | 显示全部楼层
本帖最后由 quicker 于 2011-7-8 22:42 编辑

少用循环这里指的是复用循环.
queryEles() 内部也是调用 eachAll() 函数实现的。
eachAll() eachLink() 当然也可以用,可以根据自已的需要灵活选用了, 没有一个绝对的标准.

点评

同意: 5.0 真棒: 5.0
同意: 5 真棒: 5
再次感谢你的耐心。  发表于 2011-7-8 23:12

5

主题

76

回帖

457

积分

二级会员

积分
457
发表于 2011-7-15 01:42:35 | 显示全部楼层
本帖最后由 namwonsta 于 2011-7-15 01:48 编辑

wb.queryEles及web.form.query库实现得很精巧,建议所有人都进行阅读。
我这里有一些不太一样的个人理解:
功能完备的css选择器还是可以很强大的,实现上也可以很精巧,同时在进行细粒度的选取时感觉做法稍微简洁一些。
DOM API还是有一定复杂度的,css回避了它的复杂度,其语法适合人类阅读,css选择器沿用了这种设计,使得用户可以与dom api及dom规范相互隔离,而css选择器能独自演化,本质上aardio也做到了这一点。同时javascript类库(框架)和aardio所面临的境地有些不同,前者的环境更为恶劣,后者的环境相对宽松(也许不断演化后会有些不同,但至少现在不会,也可能永远不会),两者都在自己的领域走在正确的路上。

点评

同意: 5.0 反对: 5.0
真棒: 5.0
点评错鸟,不是反对。。。我以为是同意的!  发表于 2011-7-15 14:34
同意: 5 反对: 5 真棒: 5
虽然我不是程序员,可是真的,这里了解到很多,还有这圈子的人都很热心啊!!!谢谢各位啊。  发表于 2011-7-15 14:33

0

主题

14

回帖

76

积分

一级会员

积分
76
发表于 2011-8-10 11:22:49 | 显示全部楼层
很好,很强大

0

主题

14

回帖

76

积分

一级会员

积分
76
发表于 2011-8-19 13:40:21 | 显示全部楼层
又来了,复习

9

主题

70

回帖

583

积分

三级会员

积分
583
发表于 2011-8-19 13:53:10 | 显示全部楼层
学习一下。这下可以做点击类的小程序了~!呵呵。~

0

主题

13

回帖

178

积分

一级会员

积分
178
发表于 2011-9-5 14:29:39 | 显示全部楼层
学习一下!

2

主题

1

回帖

16

积分

新手入门

积分
16
发表于 2012-3-5 15:07:33 | 显示全部楼层
框架没有名字怎么搞

10

主题

52

回帖

326

积分

二级会员

积分
326
 楼主| 发表于 2012-4-24 00:12:48 | 显示全部楼层
本帖最后由 叶城.HK 于 2012-4-24 23:28 编辑
@张晓山 发表于 2012-3-5 15:07
框架没有名字怎么搞

都是用循环的办法,在真的没有,找到附近的,然后tab,然后click.

话说,框架怎么没有名字???

12

主题

188

回帖

1249

积分

荣誉会员

积分
1249
QQ
发表于 2012-4-24 14:21:19 | 显示全部楼层
看到各个高手的讲课真是太精彩了

1

主题

31

回帖

192

积分

一级会员

积分
192
发表于 2012-5-2 11:42:47 | 显示全部楼层
学学中

13

主题

100

回帖

687

积分

三级会员

积分
687
发表于 2014-5-19 00:02:27 | 显示全部楼层
点击广告,是不是也可以这么做?
但是超链接是用js生成的,怎么办啊?

每次点上去就弹广告是怎么实现的?可以避开吗?
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-7-24 05:51 , Processed in 0.095560 second(s), 32 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表