je le VBScript suivant dans une action réutilisable:QTP: Object erreurs obligatoires lorsque l'objet est valide
'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
Tout fonctionne très bien, jusqu'à ce que je la déclaration de la boucle en bas de l'extrait. Là, QTP me donne une erreur "Object Required" et refuse d'élaborer.
- J'ai une valeur d'avance de 58, bien que j'ai essayé de le mettre à 0 avant d'entrer dans la boucle. Final est un tableau de 6 chaînes, chacune étant une adresse URL. Tous ont une valeur.
- Si je msgbox (final (2)), je vois la valeur de final (2) comme étant valide.
- IsObject (final (1)) = false
- final (1) présente la valeur correcte
- msgbox (finale est rien) et msgbox (final (1) est rien) donnent la même erreur.
Il semble que le tableau soit nul mais que le tableau possède des membres? Comment est-ce possible? De quoi parle QTP?
Oui, ça a marché; Bien que maintenant je me demande pourquoi cela a fonctionné dans la première boucle. – tsilb
Bon point, j'ai édité ma réponse pour expliquer pourquoi la première boucle a fonctionné. – Motti
Excellente réponse, Motti. – TheBlastOne