簡體   English   中英

QTP:Object對象有效時所需的錯誤

[英]QTP: Object Required errors when Object is valid

我在可重用的操作中有以下VBScript:

'Gather links
Browser("1").Navigate "http://InternalWebmail/something/inbox.nsf"
set oDesc = Description.Create()
oDesc("micclass").Value = "Link"
set links = Browser("1").Page("Webmail").ChildObjects(oDesc)
Dim links2
links2 = ""

'Filter out irrelevant links
For i = 0 To links.Count-1
    If lcase(trim(links(i).GetROProperty("text"))) = lcase(trim(DataTable("ExpectedFrom", dtGlobalSheet))) Then
    links2 = links2 + "," + links(i).GetROProperty("url")
    End If
Next

Dim final
final = split(mid(links2,2),",")  'Remove leading comma and split into array

'For each link (i.e. for each E-mail received):
'Effectively giving a reusable action an input parameter, I hope

For i = 0 To final.Count - 1  'error: Object Required
    DataTable("url","CheckHeader") = final(i)
    RunAction "CheckHeader", oneIteration
Next

一切都運行得很好,直到我得到片段底部的循環聲明。 在那里,QTP給了我一個錯誤“Object Required”並且拒絕詳細說明。

  • 雖然我在進入循環之前嘗試將其設置為0,但我的前導值為58。
  • final是一個包含6個字符串的數組,每個字符串都是一個 都有價值。
  • 如果我是msgbox(final(2)),我認為final(2)的值是有效的。
  • isobject(final(1))= false
  • final(1)具有正確的值
  • msgbox(final is nothing)和msgbox(final(1)什么都沒有)產生相同的錯誤。

它看起來好像數組是null但不知何故數組有成員? 這怎么可能? QTP在談論什么?

在vbscript數組中沒有Count屬性,您應該使用UBound

x = split("how now brown cow")
' MsgBox x.Count ' error
MsgBox UBound(x) ' 3

為第一個循環工作的.Count的原因是ChildObjects不返回數組,它返回一個COM集合對象。 這也是為什么在分配links時必須使用Set語句而不是在分配到final時使用Set語句的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM