2016-11-04 1 views
1

Je ne peux pas accéder à un objet dans mon test. L'objet est un onglet, attaché à une (sous) fenêtre dans mon application. Avant et après le Testcase, l'onglet et la fenêtre à laquelle l'onglet est attaché sont trouvés par l'objet espion, mais pendant que le test fonctionne, l'erreur ci-dessous apparaît.UFT/QTP - Objets introuvables parent

Impossible de trouver le parent "[Window]" de l'objet "[ActiveX]" (fenêtre de classe). Vérifiez que les propriétés parentes correspondent à un objet actuellement affiché dans votre application.

-je accéder à l'objet si:

VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab") 

Je suis nouveau à UFT, donc je cherchai un certain temps et a trouvé des solutions, mais ils semblent ne pas travailler pour moi, car ils ont toujours liés à des tests du navigateur, et non application.

+0

Ok, vous dites que la fenêtre et la languette attachée sont trouvées par l'objet espion. Pouvez-vous vous assurer que votre script peut trouver et interagir avec ApplicationWindow et SubWindow? – olyv

+0

La propriété Smart Identification de l'objet est-elle définie sur True? Si c'est le cas, changez-le en false et essayez de mettre en évidence l'objet dans le référentiel d'objets.Dans le cas où il y aurait plus d'une correspondance pour l'objet, UFT lancera un message contextuel le disant et, si tel est le cas, vous pouvez essayer d'affiner les propriétés de votre objet –

Répondre

0

Avertissement: longue explication suit, vous pouvez passer au dernier paragraphe pour une victoire rapide suggéré.


Lorsque UFT identifie les objets il le fait de haut en bas, votre hiérarchie d'objets est:

VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab") 

Et UFT dit que:

Vous ne trouvez pas le "[ActiveX]" parent de l'objet "[Window]" (classe Window).

Cela signifie que id a trouver VbWindow("ApplicationWindow") mais n'a pas pu trouver le Window("SubWindow"). Essayez de mettre en évidence le VbWindow pour vous assurer que UFT identifie l'objet que vous attendez. Ensuite, utilisez l'objet espion pour inspecter la fenêtre que vous pensez que UFT devrait trouver. Puis comparez les propriétés dans le référentiel d'objets avec celles de la fenêtre que vous voyez et trouvez comment ces descriptions diffèrent.

En tant que raccourci, vous pouvez essayer d'utiliser Maintenance Run Mode qui devrait effectuer ces étapes pour vous et suggérer un moyen de réparer le test.

+0

Merci pour votre réponse @Motti Les objets semblent être les mêmes, donc j'ai essayé le mode de fonctionnement de maintenance, mais j'ai l'erreur que le mode est désactivé https://picload.org/image/rdipwrad/err.jpg et ne peut pas exécuter les actions qu'il contient https://picload.org/image/rdipwrao/mmode.jpg. Le bloc opératoire est local (non partagé). J'ai deux librairies de fonction assosiées au test. Je cours UFT en tant qu'administrateur. Pouvez-vous m'aider avec celui-ci? – Twiebie

+0

@Twiebie, désolé, je ne sais pas pourquoi le mode d'exécution de maintenance doit être désactivé. – Motti

0

Juste une idée pour identifier la cause première du problème. 1.Essayez avec le conteneur de niveau supérieur (en ignorant le conteneur de niveau suivant) et vérifiez votre existence de parent.

VbWindow("ApplicationWindow").ActiveX("Tab") 

2.Vérifiez les propriétés avant et après. Je voulais dire validation côte à côte. Il pourrait y avoir une chance de discordance de propriété.

3.Utilisez la méthode Actualiser l'objet.

Window("Calculator").RefreshObject 

4.Query votre parent de l'objet Tab

Set objParent = VbWindow("ApplicationWindow").ActiveX("Tab").GetTOProperty("parent") 
Msgbox objParent.GetROProperty("text") 
Set objParent = VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab").GetTOProperty("parent") 
Msgbox objParent.GetROProperty("text") 
+0

J'ai essayé toutes les étapes, mais j'ai quand même objets. Les deux msgBoxes jettent une erreur d'objets non existants. mon code ressemble maintenant à 'vbWindow (" ApplicationWindow "). RefreshObject VbWindow (" ApplicationWindow "). Fenêtre (" SubWindow ") RefreshObject Définissez objParent = vbWindow (" ApplicationWindow "). ActiveX (" Tab "). GetTOProperty ("parent") Msgbox objParent.GetROProperty ("text") Définir objParent = VbWindow ("ApplicationWindow"). Fenêtre ("SubWindow"). ActiveX ("Tab"). GetTOProperty ("parent") Msgbox objParent.GetROProperty ("text") ' – Twiebie

+0

Essayez d'ajouter un onglet dans le référentiel d'objet et mettez en surbrillance avant et après. Si des problèmes persistent, capturez les propriétés avant et après activation puis vérifiez la comparaison des propriétés. Et aussi, essayez avec l'option Mettre à jour à partir de l'application lorsque vous n'êtes pas reconnu avec l'objet. –

+0

Pouvez-vous afficher les propriétés du parent avant et après, Si autorisé? –