Identifiant ordinal dans QTP/UFTExemple d'identification d'objet
⚡ Résumé intelligent
Identifiant ordinal dans QTP/UFT est le critère de départage UFT S'applique lorsque les propriétés obligatoires et auxiliaires correspondent encore à plus d'un objet, en utilisant les valeurs Index, Location ou CreationTime pour sélectionner un seul objet unique.
Qu'est-ce qu'un identificateur ordinal ? QTP/UFT?
An Identificateur ordinal est une propriété numérique qui UFT (anciennement QTPCette fonction ajoute des informations à la description d'un objet lorsque les propriétés obligatoires et complémentaires enregistrées lors d'une session ne suffisent pas à l'identifier de manière unique. Au lieu de générer une erreur, l'outil utilise un compteur qui, en substance, indique : « Prenez le troisième objet de cette classe. »
Par défaut, chaque classe d'objet de test possède un identifiant ordinal. Un contrôle WebEdit est numéroté différemment d'un bouton WinButton, et un navigateur l'est encore davantage. Vous pouvez consulter ou modifier l'identifiant ordinal par défaut d'une classe dans la fenêtre « Identification des objets ».
Comme le montre la capture d'écran ci-dessus, la liste déroulante « Identifiant ordinal » se trouve en bas de la boîte de dialogue « Identification de l'objet », sous les listes des propriétés obligatoires et facultatives. Cette position n'est pas fortuite : elle reflète l'ordre dans lequel… UFT consulte en fait les trois groupes.
Il existe trois types d'identificateurs ordinaux dans UFT:
- Basé sur un index
- Basé sur l'emplacement
- Temps de creation
Pourquoi UFT N'utilise les identificateurs ordinaux qu'en dernier recours.
Identification d'objets dans UFT Le processus se déroule en cascade. Les propriétés obligatoires sont apprises en premier. Si elles ne produisent aucune correspondance, les propriétés auxiliaires sont ajoutées une à une jusqu'à ce que la description soit unique. Ce n'est que lorsque les deux groupes sont épuisés que… UFT Un identifiant ordinal est associé, et lors de l'exécution, le mécanisme d'identification intelligente est consulté avant que la valeur ordinale ne soit considérée comme fiable.
Ce classement s'explique par la stabilité. Les propriétés obligatoires et d'assistance décrivent est ce que nous faisons Un objet est défini par : son nom, sa balise HTML, son type et son étiquette. Un identifiant ordinal ne fait que décrire… où L'objet se trouvait là par hasard au moment de l'enregistrement. Tout changement de page modifie le numéro.
- Un développeur insère un champ caché au-dessus de celui que vous automatisez.
- Une bannière promotionnelle ajoute deux liens supplémentaires à l'en-tête.
- Une mise en page adaptative réorganise le formulaire de deux colonnes en une seule.
- Une fenêtre contextuelle de navigateur s'ouvre plus tôt que lors de l'exécution enregistrée.
Aucune de ces modifications ne compromet une description basée sur un nom ou un identifiant, mais chacune décale silencieusement toutes les valeurs d'index et d'emplacement sur la page. C'est pourquoi les ingénieurs expérimentés considèrent un identifiant ordinal comme un signal indiquant que la description de l'objet nécessite des améliorations, et non comme une solution définitive. Le même principe s'applique à l'ensemble des éléments. tests d'automatisation cadres en général, y compris la stratégie de localisation dans Selenium.
Astuce : Avant d'accepter un identifiant ordinal, ouvrez l'objet dans l'explorateur d'objets et recherchez un attribut personnalisé stable. L'ajout de cet attribut à la liste des propriétés d'assistance de la classe permet souvent de se passer d'un identifiant ordinal pour chaque futur objet de ce type.
Types d'identificateurs ordinaux dans UFT/QTP
Basé sur un index
- Lorsqu'un identifiant ordinal basé sur un index est utilisé, UFT attribue une valeur à la indice propriété de l'objet pendant l'enregistrement.
- La valeur est basée sur l'ordre dans lequel l'objet apparaît dans le code source, et non à l'écran.
- La première occurrence a la valeur 0.
- Les valeurs des propriétés d'index sont spécifiques à chaque objet, donc chaque classe d'objet de test est comptabilisée séparément.
- Par conséquent, si vous utilisez index:=3 pour décrire un objet de test WebEdit, UFT recherche le quatrième objet WebEdit sur la page.
- De même, si vous utilisez index:=1 pour décrire un objet de test WebButton, UFT recherche le deuxième objet WebButton sur la page.
Basé sur l'emplacement
- Lorsqu'un identifiant ordinal basé sur la localisation est utilisé, UFT attribue une valeur à la Localisation propriété de l'objet permettant de l'identifier de manière unique.
- La valeur est basée sur l'ordre dans lequel l'objet apparaît dans la fenêtre, le cadre ou la boîte de dialogue, par rapport à d'autres objets ayant des propriétés identiques.
- La première occurrence de l'objet est 0.
- Les valeurs sont attribuées en colonnes, de haut en bas puis de gauche à droite.
- L'emplacement est l'identifiant ordinal par défaut pour la plupart des normes Windows classes d'objets de test, où la mise en page visuelle est plus stable que l'ordre de balisage.
Temps de creation
- Lorsque l'identifiant ordinal de l'heure de création est utilisé, UFT attribue une valeur à la temps de création propriété d'un objet navigateur.
- Cet identifiant est disponible uniquement pour l'environnement Web et uniquement pour les objets de test du navigateur.
- Cette valeur indique l'ordre dans lequel le navigateur a été ouvert par rapport aux autres navigateurs ouverts.
- Le premier navigateur ouvert pendant l'exécution reçoit creationtime:=0, et les navigateurs suivants reçoivent 1, 2, 3, et ainsi de suite.
- Si un navigateur est fermé, les navigateurs restants conservent leurs valeurs d'origine au lieu d'être renumérotés.
Tableau comparatif : Index vs Emplacement vs Date de création
Les trois identifiants répondent à trois questions différentes, et choisir le mauvais est une cause fréquente de pannes intermittentes.
| Aspect | Sommaire | Lieu | CreationTime |
|---|---|---|---|
| Nom de la propriété | indice | Localisation | temps de création |
| Base de commande | Ordre dans la hiérarchie du code source / des objets | Position de l'écran à l'intérieur de la fenêtre, du cadre ou de la boîte de dialogue | Ordre d'ouverture des instances du navigateur |
| Règle de comptage | Séquentiel, par classe d'objet de test | Colonnes, de haut en bas puis de gauche à droite | Séquentiel, par instance de navigateur |
| Première valeur | 0 | 0 | 0 |
| S'applique à | Web et Windows les classes | Principalement standard Windows les classes | Objets du navigateur uniquement |
| Se casse lorsque | Modifications de l'ordre des marges | La mise en page a été repositionnée ou redimensionnée. | Windows ouvrir dans une séquence différente |
| Meilleur utilisé pour | Contrôles de grille ou de tableau répétitifs | Formulaires de bureau hérités avec mise en page fixe | Flux Web multi-fenêtres tels que les fenêtres contextuelles de paiement |
Comment définir l'identificateur ordinal dans le référentiel d'objets
L'identifiant ordinal est configuré pour chaque classe d'objet de test et est appliqué automatiquement à chaque objet de cette classe. UFT Les données sont apprises ultérieurement. Les objets déjà présents dans le référentiel ne sont pas mis à jour rétroactivement.
- Ouvrez UFT et sélectionnez Outils > Identification d'objets.
- Choisissez l'environnement, par exemple Web ou Standard. Windows, dans le menu déroulant Environnement.
- Sélectionnez la classe d'objet de test que vous souhaitez modifier, par exemple WebEdit ou WinButton.
- Dans l' Identifiant ordinal Dans cette section, sélectionnez Index, Emplacement, Date de création ou Aucun.
- Cliquez à nouveau OK et réapprendre l'objet afin que la nouvelle valeur ordinale soit prise en compte.
- Ouvrez le référentiel d'objets, sélectionnez l'objet et vérifiez que la propriété ordinale apparaît bien dans la liste de description.
Sélection Aucun désactive complètement le mécanisme de repli pour cette classe. UFT Le système signalera alors une erreur d'identification plutôt que de tenter une supposition, ce qui est souvent le comportement souhaité dans une suite où une identification erronée silencieuse est plus dommageable qu'une défaillance manifeste. Il est important de consigner vos attentes dans un document bien rédigé. cas de test rend ce compromis explicite pour toute l'équipe.
⚠️ Attention : Modifier l'identifiant ordinal d'une classe est un paramètre machine, et non un paramètre de test. S'il n'est pas exporté et partagé, des scripts qui fonctionnent correctement sur votre machine peuvent échouer sur celle d'un collègue ou sur l'agent de compilation.
Comment utiliser les identificateurs ordinaux dans DescriptProgrammation ive
En programmation descriptive, il n'existe pas de boîte de dialogue d'identification d'objet. L'ordinal est directement intégré à la chaîne de description, comme n'importe quel autre nom de propriété, et son indexation commence toujours par zéro.
' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank") objPage.WebEdit("index:=3").Set "9999999999" Print "Filled WebEdit occurrence #" & (3 + 1) ' Location is counted top to bottom, then left to right objPage.WebButton("location:=1").Click Print "Clicked WebButton occurrence #" & (1 + 1) ' CreationTime works only on Browser objects Print "Switching to browser opened at position #" & (1 + 1) Browser("creationtime:=1").Sync
Sortie :
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Un modèle plus sûr consiste à combiner des biens immobiliers avec ChildObjects L'indice ordinal est donc validé avant d'être utilisé. L'exemple ci-dessous suppose une page contenant cinq objets WebEdit correspondants et un index de 9.
Dim oDesc, oChildren, intIndex Set oDesc = Description.Create() oDesc("micclass").Value = "WebEdit" oDesc("html tag").Value = "INPUT" Set oChildren = objPage.ChildObjects(oDesc) intIndex = 9 If intIndex < oChildren.Count Then oChildren(intIndex).Set "Guru99" Else Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match" End If
Sortie :
Index 9 is out of range; only 5 objects match
Ce mécanisme transforme une erreur d'exécution peu informative de type « Objet non identifié » en un message lisible, ce qui est important lors de la publication des résultats dans un rapport de défaut. tracker ou à HP ALM intégré à UFT.
Erreurs courantes lors de l'utilisation des identificateurs ordinaux
La plupart des défauts liés à l'ordre tracet retour à un petit ensemble d'erreurs récurrentes.
- En comptant à partir de 1. Chaque identifiant ordinal commence à 0. Écrire index:=1 pour le premier champ est l'erreur la plus courante et produit un décalage d'une unité qui ressemble à un problème de synchronisation.
- Confusion entre l'index et la localisation. L'index suit le code source ; l'emplacement suit l'affichage à l'écran. Sur une page où le CSS réorganise les éléments, les deux valeurs diffèrent et s'inversent.ping Ils ciblent silencieusement le mauvais contrôle.
- Utilisation de CreationTime en dehors de l'environnement Web. Cette propriété n'existe que sur les objets Browser. Son application à un objet Page, Frame ou Window génère une erreur de propriété non prise en charge.
- Intégrer en dur un nombre ordinal dans une fonction partagée. Une fonction réutilisable qui suppose index:=2 devient inutilisable dès qu'un deuxième écran avec une mise en page différente l'appelle.
- Laisser les ordinaux dans le dépôt une fois l'application stabilisée. Une fois que les développeurs auront ajouté des identifiants stables, il faudra revoir les objets et remplacer l'ordinal par la nouvelle propriété.
- Utilisation des ordinaux dans des boucles sur des grilles. Préférez
ChildObjects, qui renvoie une collection en direct, de sorte que le nombre reflète la page actuelle plutôt que celle enregistrée.
Ressources
Téléchargez les pages Web utilisées dans le tutoriel ci-dessus pour vous entraîner.
Les identifiants ordinaux ne représentent qu'une petite partie du modèle d'identification d'objets. Pour comprendre leur intégration dans le flux de travail global, poursuivez votre lecture pour découvrir la suite. QTP/UFT série de formation, revoyez les principes fondamentaux de test logiciel, découvrez comment les résultats sont gérés dans le Tutoriel HP ALMet comparer les stratégies de localisation avec les Selenium tutoriel.
FAQ
Cliquez à nouveau ici si la vidéo n'est pas accessible


