|
转自3atesting
'这段代码有两个很大的问题
'第一:在获取到iframe对象后,无法获取到frame对象中的所有链接,从而导致无法点击对象中链接
'此时我无奈之下,重新打开了一个链接,在另外一个页面去拿相应的链接了,原因查出来了,因为
'frame中链接涉及到另外一个域了,实际此DOM操作出现了跨域操作,从而导致了无权操作的过程
'但是现在尚未想到好的策略解决,只好出此下策
'第二:这个程序里面获取对象仍使用了部分的硬代码,这个部分完全可以写成像watir一样,有时间
'会再次完善,或者同行可以一起完善它
Set ie = CreateObject("internetexplorer.application")
ie.Visible = true
'打开网页::3aTesting的BBS
ie.Navigate "www.3atesting.com/bbs"
'等待网页打开结束
delay(ie)
'获取QTP板块的链接,然后点击
Set linkAll=ie.document.getElementsByTagName("a")
Set searchLink=GetLink(linkAll,"QTP")
searchLink.click
delay(ie)
'随机取板块的某一个链接,并且点击
Set webTable=ie.Document.getElementsByTagName("Table")
Set webtableRows=webtable.item(1).getElementsByTagName("TR")
i=genRand(webtableRows.length)
Set tablelink=webtableRows.item(i).getElementsByTagName("a")
tablelink.item(1).click
delay(ie)
'获取帖子中iframe中的某一个对象,重新打开一个链接,并获取link对象,然后点击
Set iframes=ie.Document.getElementsByTagName("iframe")
i=genRand(iframes.length)
ie.Navigate iframes.item(i).src
delay(ie)
Set googlelink=ie.Document.getElementsByTagName("a")
googlelink.item(0).click
'MsgBox tablelink.length
'ie.Document.parentwindow.close
ie.Quit
Set googlelink=Nothing
Set iframes=Nothing
Set webtableRows=Nothing
Set webTable=Nothing
Set searchLink=Nothing
Set linkAll=Nothing
Set ie=Nothing
Function GetLink(objects,name)
For Each obj In objects
tmp=obj.innertext
'MsgBox tmp
If Len(tmp)>0 Then
If RegExpTest(obj.innertext,name) Then
Set GetLink=obj
Exit For
End If
End If
Next
End Function
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' Create variable.
Set regEx = New RegExp ' Create regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = False ' Set case sensitivity.
retVal = regEx.Test(strng) ' Execute the search test.
RegExpTest=retVal
End Function
Sub delay(obj)
Do
WScript.Sleep 5
Loop Until CInt(obj.readyState)=4
' MsgBox CInt(obj.readyState)
End Sub
Function genRand(count)
genRand=Int(Rnd() * count)
End Function
[ 本帖最后由 lantianwei 于 2007-12-31 20:01 编辑 ] |
|