vbscript automated-tests qtp

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?