Comment appeler une fonction (avec paramètres) qui est une fonction de la bibliothèque, en prenant le nom de la fonction à partir d'une variable?
Je suis en train d'utiliser getref pour appeler une fonction à partir de la fonction de bibliothèque associée avec le test.
Mon code -
Dans action1
str = "sample"
msg = "hi"
x = GetRef("Function_"&str)(msg)
msgbox x
Dans la Bibliothèque de fonction,
Function Function_sample(strMsg)
Function_sample = strMsg
End Function
J'obtiens le message d'erreur -
"Invalid argument ou appel de procédure."
Mais il fonctionne très bien si la fonction est placée dans la même action.
Comment appeler une fonction (avec paramètres) qui est une fonction de la bibliothèque, en prenant le nom de la fonction à partir d'une variable?
- comme votre code "fonctionne" comme une plaine VBScript, il doit y avoir un problème avec votre (y compris de la bibliothèque.
- Je ne pense pas que
GetRef
fonctionne en plaine VBScript. - bien sûr, il n', voir ma réponse ci-dessous.
- Je corrige la position des mains.
Vous devez vous connecter pour publier un commentaire.
Minimaliste de travail exemple:
Lib.vbs:
Principal.vbs:
De sortie:
Le message d'erreur "... runtime error: Invalid argument ou appel de procédure: 'GetRef'" indique que les (importation) de la fonction de bibliothèque est à blâmer.
Mise à jour:
Je pense qu'il est plausible de supposer que le moteur VBScript garde une table associant sous/fonction/méthode de noms avec appelable code pour être en mesure de faire littéral/appels directs:
et que GetRef("Deux") accède à cette table. Donc, je n'aurais jamais attendre indirecte/'pointeur de fonction d'appel ou un GetRef() échoue lorsque le littéral invocation réussit.
Mais selon cette et que, il y a au moins quatre façons à "importer" des bibliothèques/modules dans QTP, et que je n'utilise pas QTP je ne peux pas exclu, que certains (voire tous) de ces méthodes de faire quelque chose de stupide à cause de la mauvaise comportement que vous décrivez.
ExecuteFile
et puisGetRef
fonctionne.J'ai fait face à la même question et a découvert que l'association ou le chargement de la fonctionnelle bibliothèques ne fonctionne pas pour
GetRef
. Pour contourner ce problème, tout ce que vous devez faire, c'est plutôt d'associer ou de chargement de votre FL, de l'exécuter à l'aide deExecuteFile
fonction.Dans action1