51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3400|回复: 17
打印 上一主题 下一主题

[原创] 点击本网站内所有的Link

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-9-24 15:38:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的设计思想是,首先获取首页的所有链接,这是第一层。
然后点击第一层里的第一个链接,获取这个链接下的所有链接,这是第二层
然后点击第二层里的第一个链接,获取这个链接下的所有链接,这是第三层
....
直到首页的第一个链接全部跑完了,再回过来跑首页的第二个链接,然后再一层一层的跑

期间要加很多判断:
1.判断link是否有用(网页打不开)
2.判断是不是本网站内的链接,链到别人的网站去的这个就不需要检测
3.判断每次将要点的链接是不是已经点过的,点过的就不用再点了

这个脚本怎么设计啊,请大家帮我看看啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-9-24 15:42:21 | 只看该作者
这个脚本可以写,但是几乎是不能用的
qtp做这个事情性能是非常差的,差到……我不知道怎么形容

如果你想懒一点,用xenu
如果真要自己写,用java实现一个也不难,有个html的parser可以直接拿去用的
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-9-24 15:45:17 | 只看该作者
半年前我写过,写了1200多行代码。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-9-24 15:46:33 | 只看该作者

回复 3# 的帖子

用qtp????
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-9-24 15:48:06 | 只看该作者

是呀,基本适合所有html的网站页面
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-9-24 15:59:31 | 只看该作者
写当然是没问题的,慢一些也是肯定的,但未必就是完全不能用吧~~

有几个概念LZ还是要定义清楚咯,比如"链接"涵盖的范围?除了Link,图片链接算不算链接~比如本网站的定义,等等

代码的思路也不会很复杂,用childobjects方法取到第一个页面上的所有"链接",循环判断每个链接,满足条件的就点击,然后递归。

有一点要特别注意下,就是点击链接后页面的打开方式,是在新窗口打开还是在本页面内打开,这个区别蛮大的,具体的处理方法上也就会有所不同。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-9-24 16:14:52 | 只看该作者
思路还可以,我那时候的思路是,
page1点击出来的所有New_Page_DifIE或者New_Page_SameIE的,都记录在一个datadrive里面
然后做了返回或者关闭的工作。直到把page1的所有连接都点完了,再去做datadrive里面的第2个页面或者连接的点击操作

过程中包括了错误捕获,对象重捕获,错误恢复等等。
注意点:
1,这里面如果做了New_Page_SameIE,需要注意的是link的重新捕获,因为这些对象会因为页面变化而过期。
2,要注意页面的frame捕获,因为frame就像一个page一样,不过和page操作也差不多。
3,如果使用xenu,它的缺点是无法做登陆后的连接点击,要克服这点除了开发给你提供特定的页面或者“连接登陆”(点连接后直接登陆,因为把用户名和密码写在里面)
4,或者通过写进send session或者cookies的方法去实现(这点主要是针对第3点)
5,需要注意的是,如果内部做的测试,有时候不小心因为一些友情连接,点击到外网,那真的是没完没了。所以做这个操作的时候,你需要把连接的link做个提取,使用正则表达式去取出http://localhost或者http://192.168.....内网的自己地址。因为一般我们的服务器都建在内网。但如果你是在做外网的操作。哪么你或者需要写个正则表达式再去匹配这一类网站的link。

[ 本帖最后由 假装不在 于 2008-9-24 16:20 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-9-24 16:22:28 | 只看该作者
不知不觉我又说了哪么多。,这个是我项目里面的一套脚本。一个中小型的,大概1个半小时可以跑完它。
虽然没有xneu快,但是可以实现登陆后的。如果可以做登陆的检测,哪么我们当然使用xneu了。
其实这套脚本我有个讲稿,但是不知道丢哪里去了。

[ 本帖最后由 假装不在 于 2008-9-24 16:25 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-9-24 16:30:03 | 只看该作者
ls太有心了。。。
这个我最多想想就算了,肯定不会真的去做的,更何况是写1200行代码
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-9-24 16:34:15 | 只看该作者
原帖由 hsjzfling 于 2008-9-24 16:30 发表
ls太有心了。。。
这个我最多想想就算了,肯定不会真的去做的,更何况是写1200行代码



其实,没有动手去做,想的,永远不会碰到什么问题,最多就是几个技术点的问题。
例如link过期这些,是在项目前没想到的。

不过这个是第1个版本的。现在公司项目里面已经写到第三套了。第2套是用递归。控制性或者也叫维护性不是哪么好,维护到哭了。类似我之前说的时间对象内存等等问题会出现,而且很难控制。

[ 本帖最后由 假装不在 于 2008-9-24 16:35 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-9-24 16:51:28 | 只看该作者

回复 6# 的帖子

图片之类的都算的,无须重新打开页面,只要在本页面内点击就行了
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2008-9-24 16:53:19 | 只看该作者
能不能共享一下你的脚本?
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2008-9-24 16:54:09 | 只看该作者
原帖由 假装不在 于 2008-9-24 16:34 发表



其实,没有动手去做,想的,永远不会碰到什么问题,最多就是几个技术点的问题。
例如link过期这些,是在项目前没想到的。

不过这个是第1个版本的。现在公司项目里面已经写到第三套了。第2套是用递归。 ...


加我msn:wangyuanwy2002@hotmail.com
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-9-24 17:03:31 | 只看该作者
原帖由 trademark 于 2008-9-24 16:53 发表
能不能共享一下你的脚本?



哈哈,这个是公司的东西,不能共享。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2008-9-24 17:26:40 | 只看该作者
哎,说到头了,大家都只是参与一下,没有一个实际的思路出来
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-9-24 17:33:40 | 只看该作者
原帖由 假装不在 于 2008-9-24 16:34 发表



其实,没有动手去做,想的,永远不会碰到什么问题,最多就是几个技术点的问题。
例如link过期这些,是在项目前没想到的。

不过这个是第1个版本的。现在公司项目里面已经写到第三套了。第2套是用递归。 ...


既然用递归了,那当然就不应该单纯的记链接对象咯,否则多半会遇到对象过期的问题。应该将链接的url/href保存下来,对于一个非submit的链接来说,点击link来打开页面与输入网址来打开应该是没有差别的吧~~这样就可以忽略掉对象过期的问题咯
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2008-9-25 09:19:45 | 只看该作者
讨论一天了,原来都只是来参与一下的
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-9-25 09:42:09 | 只看该作者
已经讨论了很多了。这些够你用的。不一定要看到脚本才叫实际。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-17 18:59 , Processed in 0.097807 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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