在我的测试中,我需要浏览网站,使用超链接,其名称(和标题)是“下一个”。我从我的应用程序中添加了它,并使用了“单击”方法。它只是第一次工作,因此浏览器导航到第二页并且已经卡在那里。我的代码如下:
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,所以我不能确切地说这个链接属于哪个框架或表,但是没有其他具有相同名称的链接。
答案 0 :(得分:1)
在评论中来回看来,next
链接确实存在于最后一页,但点击它什么都不做。
您应该修改您正在使用的描述,以便识别链接,使其仅匹配移动到下一页的链接,而不是最后一页上不可见(但在那里)的链接。
原始回答:
由于您总是使用相同的页面来调用SurfNextPage
,因此该方法应该有效(假设在所述页面下的对象存储库中存在"next"
链接)。
如果你想使用不同的页面,那么你应该使用描述性编程,即不使用存储库中的对象,而是使用类似currPage.Link("text:=next")
的内容,这将寻找与"next"
的链接文字属性。
可能出错的另一件事是在导航之前识别对象,然后导航使对象无效。如果是这种情况,您应该使用RefreshObject
方法(如文档中所述)。
如果这些建议都没有帮助,请提供更多关于“被困”的确切信息