문제

재사용 가능한 조치로 다음 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는 "객체가 필요한 객체"를 제공하고 정교화를 거부합니다.

  • 루프에 들어가기 전에 0으로 설정하려고 시도했지만 58의 주요 값을 가지고 있습니다.
  • 최종은 각각 URL의 6 문자열 배열입니다. 모두 가치가 있습니다.
  • msgbox (Final (2))이면 Final (2)의 값이 유효하다고 생각합니다.
  • isobject (final (1)) = false
  • 최종 (1)은 올바른 값을 갖습니다
  • Msgbox (Final Is Nothing) 및 Msgbox (Final (1)은 Nothing)도 동일한 오류를 산출합니다.

배열이 null 인 것처럼 보이지만 어쨌든 배열에는 멤버가 있습니까? 이것이 어떻게 가능한지? QTP는 무엇에 대해 이야기하고 있습니까?

도움이 되었습니까?

해결책

vbscript 어레이에는 a가 없습니다 Count 속성, 사용해야합니다 UBound

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

이유 .Count 첫 번째 루프에서 일했습니다 ChildObjects 배열을 반환하지 않으면 COM 수집 객체를 반환합니다. 그것이 또한 당신이 사용해야했던 이유입니다 Set 할당 할 때 진술 links 그러나 할당 할 때는 아닙니다 final.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top