由于Web中的动态更改,QTP对象所需的错误

时间:2013-12-04 05:08:24

标签: automation automated-tests qtp

执行操作时,它会持续一段时间以显示此操作成功的消息。在这里,我使用一个函数来测试消息是否出来:

    For i = 0 To NumberOfiframe - 1
       Set objPage = iframe(i).Object 
       Set objTag = objPage.GetElementsByTagName("span") 

       intTotalLink = objTag.Length - 1

       For intCtr = 0 to intTotalLink 

          If objTag(intCtr) = null Then
          Exit Function
          End If

          strContent = objTag(intCtr).InnerText 

          endPosition = InStr(1, strContent, "Not all transport requests yet")

          If endPosition > 0  then 
                TRNotReleased = FALSE
                Exit for
          End If


      Next 
  Next

当消息出来时,QTP会弹出一个显示“Object Required:objTag(..)”的窗口,我的观点是当Web UI发生变化时,QTP无法找到设置对象。

由于邮件中包含每项操作的不同信息,我是否有任何解决方案可以解决此问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用objPage.GetElementsByTagName时,您将获得对页面上DOM对象的引用,这不是QTP测试对象,而是属于浏览器的对象。当浏览器中的DOM更改您持有的对象时,它将停止生效。

如果要在HTML更改后访问该对象,则必须要求QTP再次检索它。也许是这样的:

For i = 0 To NumberOfiframe - 1
   Set objPage = iframe(i).Object 
   Set objTag = objPage.GetElementsByTagName("span") 

   intTotalLink = objTag.Length - 1

   For intCtr = 0 to intTotalLink 
      ' Get the collection of objects again
      Set objTagCurr = objPage.GetElementsByTagName("span")
      Set currObj = objTagCurr(intCtr)