51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2056|回复: 8
打印 上一主题 下一主题

[原创] 发个检查链接的代码 很强大

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-7-23 17:31:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
set a= Browser("Yahoo!")
set b= Browser("Yahoo!").Page("Yahoo!")
call CheckLinks(a,b)
Function CheckLinks (BrowserObject,BrowserPage)
CheckLinks=TRUE
Dim s_URL,i_CreationTime
Dim s_LinkOuterText,s_LinkInnerText,s_Linkhref
s_URL=BrowserPage.GetROProperty("url")
i_CreationTime=1
i_LinkCount=BrowserPage.object.links.length - 1

Dim i_Link

For i_Link=0 to i_LinkCount
If Trim(BrowserPage.object.links(i_Link).target)="" Then
BrowserPage.object.links(i_Link).target="_blank" ' Set the link to open i a new window so that we dont have any change in current window
End If

BrowserPage.object.links(i_Link).click
On error resume next
Browser("CreationTime:=" & i_CreationTime).sync
Browser("CreationTime:=" & i_CreationTime).Page("micClass:=Page").sync
On error goto 0
Dim s_LinkDetails

IHTML = Browser("CreationTime:=" & i_CreationTime).Page("micClass:=Page").object.Body.innerHTML
'Check if page was not able to be displayed
If (InStr(IHTML,"HTTP 404") <> 0) Or (InStr(IHTML,"cannot be displayed") <> 0) Then
s_LinkDetails="Link Broken" + vbcrlf + "Link Details:" +vbcrlf
s_LinkDetails=s_LinkDetails+"OuterText: "+ s_LinkOuterText + vbcrlf
s_LinkDetails=s_LinkDetails+"InnerText: "+ s_LinkInnerText + vbcrlf
s_LinkDetails=s_LinkDetails+ "href: " + s_Linkhref+ vbcrlf
s_LinkDetails=s_LinkDetails+ "Links Open in New Browse: " & bNewBrowser & vbcrlf
Reporter.ReportEvent micWarning,"Check Link(" & i_Link & ") -> " & s_LinkOuterText ,s_LinkDetails
CheckLinks=FALSE
Else
s_LinkDetails="Link Working" + vbcrlf + "Link Details:" +vbcrlf
s_LinkDetails=s_LinkDetails+"OuterText: "+ s_LinkOuterText + vbcrlf
s_LinkDetails=s_LinkDetails+"InnerText: "+ s_LinkInnerText+ vbcrlf
s_LinkDetails=s_LinkDetails+ "href: " + s_Linkhref+ vbcrlf
s_LinkDetails=s_LinkDetails+ "Links Open in New Browse: " & bNewBrowser & vbcrlf
Reporter.ReportEvent micPass,"Check Link(" & i_Link & ") -> " & s_LinkOuterText ,s_LinkDetails
End If

Browser("CreationTime:=1").close ' Close the link open.
Next
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-7-23 17:42:49 | 只看该作者
如果网页中有iframe就检查不到了,呵呵。有高人解决了这个问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-7-23 18:11:44 | 只看该作者
1,这个做到的是当前页面的检测对吧。没有检测到其它页面的。
还有一点就是少了对frame的检测。

2,对于作者去出页面的body里面的东西去判断它的错误与否,这点我也是这么做的,但是他考虑少了frame内部的东西,或者是一些其它,例如按钮上的字体,节点是input.或者其它节点。

3,对于错误的检测,作者考虑少了一个标题错误或者是工具栏显示的错误字样。

4,测试文档记录过少,或者可以加多截图功能。

5,关于这个,我个人推荐的工具是xenu或者是FreeLinkChecker。

6,这代码只提供了大家一个思想或者实现的方法,具体做起来或者更加细化,还有待下功夫,有待改进。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-7-23 18:17:12 | 只看该作者
顺便说下这代码里面有3个可以修改的地方:
1,就是对浏览器的标示,它用的是CreationTime,其实我个人之前4过了,识别速度太慢太慢了,效率根本跟不上,建议修改成句柄或者是使用desktop去抓取child之类的方法。
2,page("index:=0")也可以,使用Page("micClass:=Page")好像有点鸡肋。我不知道是否区别IE6或者IE7....
3,如果点击连接无效?!作者也没有考虑到这个问题。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-7-23 18:36:22 | 只看该作者

回复 2# 的帖子

有iframe只能是通过dom去访问了,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-7-24 09:45:34 | 只看该作者

回复 5# 的帖子

说个例子来听听,我对dom不了解。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-7-24 09:55:27 | 只看该作者

回复 6# 的帖子

你去俺博客看看咯,上面有篇介绍DOM的
http://www.51testing.com/?uid/161787
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-7-24 10:09:51 | 只看该作者

你被陈总感染了....
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-7-24 10:18:58 | 只看该作者

我怎么发现这些其实我一直都有在用....只是自己还不知道是属于这个范围的东西....
要多学习学习。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 03:23 , Processed in 0.073872 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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