如何使用它的名称或标题访问超链接

时间:2011-11-09 07:36:01

标签: qtp

在我的测试中,我需要浏览网站,使用超链接,其名称(和标题)是“下一个”。我从我的应用程序中添加了它,并使用了“单击”方法。它只是第一次工作,因此浏览器导航到第二页并且已经卡在那里。我的代码如下:

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 个答案:

答案 0 :(得分:1)

在评论中来回看来,next链接确实存在于最后一页,但点击它什么都不做。

您应该修改您正在使用的描述,以便识别链接,使其仅匹配移动到下一页的链接,而不是最后一页上不可见(但在那里)的链接。


原始回答: 由于您总是使用相同的页面来调用SurfNextPage,因此该方法应该有效(假设在所述页面下的对象存储库中存在"next"链接)。

如果你想使用不同的页面,那么你应该使用描述性编程,即不使用存储库中的对象,而是使用类似currPage.Link("text:=next")的内容,这将寻找与"next"的链接文字属性。

可能出错的另一件事是在导航之前识别对象,然后导航使对象无效。如果是这种情况,您应该使用RefreshObject方法(如文档中所述)。

如果这些建议都没有帮助,请提供更多关于“被困”的确切信息