vbscript - QTP: Objetos necesarios para los errores cuando Object es válido
automated-tests (1)
En las matrices vbscript no tienen una propiedad Count
, debe usar UBound
x = split("how now brown cow")
'' MsgBox x.Count '' error
MsgBox UBound(x) '' 3
El motivo por el que .Count
funcionó para el primer ciclo es que ChildObjects
no devuelve una matriz, sino que devuelve un objeto de colección COM. Esa también es la razón por la que tenía que usar la declaración Set
cuando se asigna a los links
pero no cuando se asigna a la final
.
Tengo el siguiente VBScript en una acción reutilizable:
''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
Todo funciona perfectamente, hasta que llegue a la declaración del bucle en la parte inferior del fragmento. Allí, QTP me da un error "Objeto requerido" y se niega a dar más detalles.
- Tengo un valor de 58, aunque intenté configurarlo en 0 antes de ingresar al ciclo.
- final es una matriz de 6 cadenas, cada una una URL. Todos tienen un valor.
- Si en msgbox (final (2)), veo el valor de final (2) como válido.
- isobject (final (1)) = falso
- final (1) tiene el valor correcto
- msgbox (final no es nada) y msgbox (final (1) no es nada) producen el mismo error.
Parece que la matriz es nula pero, de alguna manera, la matriz tiene miembros. ¿Cómo es esto posible? ¿De qué está hablando QTP?