2011-11-09 31 views
1

在我的測試中,我需要通過網站衝浪,使用超鏈接,哪個名稱(和標題)是'下一個'。我從我的應用程序中添加它,並使用'click'方法。它只是第一次工作,所以瀏覽器導航到第二頁,並在那裏停滯。我的代碼如下:我怎麼能夠訪問超鏈接,使用它的名稱或標題

Do 
    Set msgList = Browser("Incoming — Gmail").Page("ВIncoming — Gmail").ChildObjects(msgDesc) 
    msgCount = msgCount + msgList.Count() 

    Reporter.ReportEvent micPass, "MessagesCount", "Messages: " & msgCount 

    'MsgBox msgList.Count() ' in a purpose of debugging 

Loop While SurfNextPage(Browser("Incoming — Gmail").Page("Deliver successfull")) 

'Function surfs to the next page, if it possible 
' currPage -- current page 
'Return: TRUE, if link to the next page is available, otherwise ELSE 
Function SurfNextPage(currPage) 
Dim bResult 

    Set hlDesc = Description.Create 
    hlDesc("name").Value = "next" 

    Set hlList = currPage.ChildObjects(hlDesc) 
    For i = 0 to (hlList.Count()-1) 
     Set urlNextMail = hlList(i)  'there would be the only element in list 

    Next 

    bResult = urlNextMail.Exist 

    If bResult Then 
     urlNextMail.Click 'surfs to the next page 

    End If 

    SurfNextPage = bResult 

End Function 

的網頁有一個艱難的結構 - 很多DIV和Java的,所以我不能說完全把這個鏈接所屬的框架或臺,但目前還沒有其他具有相同名稱的鏈接。

回答

1

經過一段時間的評論後,看起來next鏈接確實存在於最後一頁,但點擊它什麼都不做。

您應該修改您使用的描述,以便識別鏈接,以便它僅匹配移至下一頁的鏈接,而不匹配最後一頁中不可見(但存在)的鏈接。


原來的答覆: 既然你總是使用相同的頁面調用SurfNextPage則此方法應該工作(假設在對象存儲庫下稱頁"next"鏈接)。

如果你想使用不同的頁面,那麼你應該使用描述性編程,即不使用庫中的對象,而是使用類似這樣的東西currPage.Link("text:=next")這將尋找與"next"作爲其文本屬性的鏈接。

另一件可能出錯的事情是,在導航之前識別出對象,然後導航導致對象無效。如果是這種情況,您應該使用RefreshObject方法(如文檔中所述)。

如果沒有這些建議幫助請提供關於究竟是越來越「stucked」

+0

我發現我的超級鏈接,使用ChildObjects更多的信息()。但循環永遠不會停止:Exist()總是返回'True' – Eugene

+0

@Eugene,如果'Exist'始終爲真,Click是否成功? – Motti

+0

是的,點擊成功。當瀏覽器到達最後一頁時,它無法檢測到,該鏈接不可點擊。這導致無限循環 – Eugene