【问题标题】:QTP Object Required Error due to dynamic change in Web由于 Web 中的动态变化,QTP 对象需要错误
【发布时间】:2013-12-20 11:08:04
【问题描述】:

当一个动作被执行时,它会持续一段时间来得到一个消息,表明这个动作是成功的。这里我使用一个函数来测试消息是否出来:

    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无法找到设置的对象。

由于消息包含每个操作的不同信息,我有什么解决方案可以解决这个问题吗?

提前致谢。

【问题讨论】:

    标签: automation automated-tests qtp


    【解决方案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)
    

    【讨论】:

    • 感谢 Motti,非常有帮助的回答 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多