51Testing软件测试论坛

标题: 发个检查链接的代码 很强大 [打印本页]

作者: lingxin5013    时间: 2008-7-23 17:31
标题: 发个检查链接的代码 很强大
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
作者: zzfhncn    时间: 2008-7-23 17:42
如果网页中有iframe就检查不到了,呵呵。有高人解决了这个问题了。
作者: 假装不在    时间: 2008-7-23 18:11
1,这个做到的是当前页面的检测对吧。没有检测到其它页面的。
还有一点就是少了对frame的检测。

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

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

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

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

6,这代码只提供了大家一个思想或者实现的方法,具体做起来或者更加细化,还有待下功夫,有待改进。
作者: 假装不在    时间: 2008-7-23 18:17
顺便说下这代码里面有3个可以修改的地方:
1,就是对浏览器的标示,它用的是CreationTime,其实我个人之前4过了,识别速度太慢太慢了,效率根本跟不上,建议修改成句柄或者是使用desktop去抓取child之类的方法。
2,page("index:=0")也可以,使用Page("micClass:=Page")好像有点鸡肋。我不知道是否区别IE6或者IE7....
3,如果点击连接无效?!作者也没有考虑到这个问题。
作者: zte_boy    时间: 2008-7-23 18:36
标题: 回复 2# 的帖子
有iframe只能是通过dom去访问了,呵呵
作者: 假装不在    时间: 2008-7-24 09:45
标题: 回复 5# 的帖子
说个例子来听听,我对dom不了解。
作者: zte_boy    时间: 2008-7-24 09:55
标题: 回复 6# 的帖子
你去俺博客看看咯,上面有篇介绍DOM的
http://www.51testing.com/?uid/161787
作者: 假装不在    时间: 2008-7-24 10:09

你被陈总感染了....
作者: 假装不在    时间: 2008-7-24 10:18

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




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2