Mercury Quick Test Pro et machines virtuelles: fonctionne à partir d'une machine cliente mais pas d'une autre

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

Question

J'ai une machine virtuelle (VMware) sur laquelle Mercury Quick Test Professional 9.2 est installé. J'ai un script pour tester une application écrite en VB.NET à l'aide de la bibliothèque Infragistics.

Si j'accède à cette machine virtuelle à l'aide de mon ordinateur portable (à l'aide de Remote Desktop), tout fonctionne correctement, le script se termine sans problème. Mon ordinateur portable fonctionne sous XP, avec le thème Windows Classic.

Si j'accède à cette machine virtuelle à l'aide d'une autre machine (à l'aide de Remote Desktop), le script démarre correctement, mais s'arrête à mi-parcours, sans message d'erreur de QTP, rien. Cette machine fonctionne sous XP, avec le thème Windows Classic.

Une différence entre les deux configurations est la taille de l'écran, l'ordinateur portable mesure 1 920 x 1 280 et l'autre ordinateur 1280 x 1024.

L'étape d'arrêt du script implique la vérification d'une case à cocher dans un UltraWinGrid. La case à cocher elle-même est affichée et apparaît à l'écran dans les deux cas.

Quelqu'un a-t-il déjà rencontré ce problème ou sait-il pourquoi le comportement est différent entre les deux machines?

Merci.

Était-ce utile?

La solution

OK J'ai trouvé le problème. En fait, le script échouait en silence parce que c'est ce que la personne qui l'a écrit lui avait demandé de faire. Il ne pouvait pas valider quelque chose qui était hors écran, le script a donc échoué.

Le problème était la définition QTP de "hors écran". J'ai deux écrans attachés à mon ordinateur portable, l'écran pour l'ordinateur portable lui-même (1920x1200) et un autre écran (1280x1024). Je me connecte à la machine virtuelle pour QTP à l'aide d'un poste de travail distant, qui utilise les paramètres de l'écran pour l'ordinateur portable. Cela signifie que lorsque je lance mon script QTP et que je le déplace sur l'autre écran, il ne rentre pas, de sorte que l'écran n'est plus agrandi et que l'objet est partiellement hors écran, il est donc introuvable.

La solution est simple: dans le Bureau à distance, utilisez l’onglet Affichage et définissez la taille de l’écran sur une taille de 1280x1024, et QTP n’a plus de problèmes.

Voil & # 224;.

Autres conseils

Si vous n'utilisez pas le mode Expert et / ou si vous permettez à QTP de faire la plupart du travail pour créer vos objets de référentiel, alors oui, il référence tout en pixels.

Je crée manuellement tous mes objets de référentiel, en affichant la source (dans le cas du test automatisé d'applications Web) et en utilisant Object Spy pour obtenir de l'aide si nécessaire. Je me fais un devoir de ne pas avoir d’informations de positionnement dans la définition de mon objet, pour la raison même pour laquelle vous courez.

Pour les parties de mon application Web qui interagissaient avec Windows (ouverture d'un fichier à télécharger, etc.), Object Spy était essentiel pour les essais et erreurs nécessaires à la création d'un identifiant unique pour la création de l'objet de référentiel. Mais cela peut être fait.

Boîte de dialogue Ex1: Parcourir le fichier
text = " Choisir un fichier "
nativeclass = # 32770 (apparemment de Windows VooDoo pour une boîte de dialogue d’ouverture de fichier?)

Ex2: Zone de texte du nom de fichier dans la boîte de dialogue Parcourir:
nativeclass = " Edit "
texte joint " Fichier & nom: " (plus de Windows VooDoo? Cela ne fonctionnerait pas pour moi sans le "& amp;")

Ex3: bouton Ouvrir dans la boîte de dialogue:
text = " & amp; Open "
classe d'objet = "bouton"

Bonne chance!

Point de clarification: vous avez mentionné que QTP s’arrête sans message d’erreur. Cela signifie-t-il également que le fichier journal des résultats du test ne contient également aucun message d'erreur? Si le journal contient des informations, cela peut être utile pour diagnostiquer le problème. Pourriez-vous partager les lignes de code au moment où le script échoue?

De plus, le bureau à distance redimensionnera le bureau sur la machine distante. Bien que les scripts QTP ne soient pas intrinsèquement basés sur des coordonnées, des instructions individuelles peuvent être basées sur des coordonnées par rapport à un objet. La résolution pourrait être un problème à cet égard. Par exemple, imaginez que vous ayez une ligne comme Button.Click (5, 150) enregistrée sur un ordinateur à résolution supérieure. Mais si vous tentez de le lire sur un ordinateur de résolution inférieure et que le 150 dépasse les limites de l'objet avec une résolution inférieure, cela pourrait poser un problème.

QTP n’utilise pas les coordonnées de l’écran, sauf en dernier recours. Si les objets sont identifiés en tant qu’objets de niveau supérieur ( SwfTable dans ce cas), vous devriez être OK, si Cependant, QTP ne reconnaît pas l’objet, il retourne à WinObject et aux coordonnées de l’écran.

Si vous utilisez Infragistics, sachez qu’ils étendent le support de QTP avec leur TestAdvantage qui va probablement résoudre votre problème.

Modifier: @ MatthieuF a déclaré:

  

En fait, nous utilisons le plug-in Infragistics pour QTP et le problème persiste

Pouvez-vous me donner un exemple de ligne qui échoue?

Quelques petites choses:

Vous devriez être en mesure de déboguer facilement sur la machine virtuelle: attendez simplement qu’elle s’arrête, accédez à votre référentiel d’objets et voyez s’il peut identifier l’objet. Si non, utilisez objet spy pour déterminer quelles propriétés sont différentes entre les systèmes d'exploitation. S'il existe une différence, vous pouvez toujours définir cette propriété sur une expression régulière et la faire vérifier les deux possibilités.

En supposant que ce ne soit pas le problème, nous avons rencontré des problèmes d'utilisation de bureau à distance avec QTP si la fenêtre à distance est fermée ou réduite. Pour nous, c'était un problème où le presse-papiers ne pouvait pas être modifié lorsqu'une fenêtre RDP n'était pas visible, mais il pouvait y avoir d'autres surprises lorsque QTP était utilisé de cette façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top