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.

  • (I.e. Dernier recours: UFT N'ajoute un identifiant ordinal qu'après l'échec des propriétés obligatoires et auxiliaires à rendre une description unique.
  • (I.e. Indice: Numbers objets de la même classe par ordre du code source, en commençant par 0, donc index:=3 cible la quatrième correspondance.
  • 📍 Endroit: Numbers objets par position à l'écran à l'intérieur de la fenêtre, du cadre ou de la boîte de dialogue, de haut en bas et de gauche à droite.
  • (I.e. Date de création : S'applique uniquement aux objets Browser et enregistre l'ordre dans lequel chaque instance de navigateur a été ouverte.
  • 🇧🇷 Identification de l'objet : Le type ordinal par défaut de chaque classe d'objet de test est modifiable sous Outils > Identification des objets.
  • Descriptprogrammation interactive : Transmettez l'index, l'emplacement ou la date de création comme une propriété ordinaire à l'intérieur de la chaîne de description de l'objet.
  • ⚠️ La fragilité : Les valeurs ordinales changent à chaque modification de la mise en page ; il faut donc les considérer comme une solution temporaire et jamais comme un choix de conception.

Identifiant ordinal dans QTP/UFT Explication avec index, emplacement et date de création

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 ».

Paramètre d'identificateur ordinal dans le QTP/UFT Fenêtre d'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:

  1. Basé sur un index
  2. Basé sur l'emplacement
  3. 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… 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.

  1. Ouvrez UFT et sélectionnez Outils > Identification d'objets.
  2. Choisissez l'environnement, par exemple Web ou Standard. Windows, dans le menu déroulant Environnement.
  3. Sélectionnez la classe d'objet de test que vous souhaitez modifier, par exemple WebEdit ou WinButton.
  4. Dans l' Identifiant ordinal Dans cette section, sélectionnez Index, Emplacement, Date de création ou Aucun.
  5. Cliquez à nouveau OK et réapprendre l'objet afin que la nouvelle valeur ordinale soit prise en compte.
  6. 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

La valeur par défaut varie selon la classe. La plupart des objets de test Web, tels que WebEdit et WebButton, utilisent par défaut Index, les objets Browser utilisent par défaut CreationTime et Standard. Windows Les classes par défaut sont définies sur « Emplacement ». Chaque valeur par défaut est visible et modifiable dans la fenêtre « Identification de l’objet ».

L'identification intelligente s'exécute en premier. UFT Il tente d'abord la description apprise, puis l'identification intelligente si elle est activée pour la classe, et ne recourt à l'identifiant ordinal que lorsque les deux méthodes ne parviennent pas à produire un seul objet correspondant.

Oui. Dans la fenêtre Identification de l'objet, sélectionnez Aucun dans la liste déroulante Identifiant ordinal de la classe. UFT Elle signale alors une erreur d'identification au lieu de deviner, ce qui est plus sûr pour les suites de tests où un clic sur un objet incorrect pourrait corrompre les données de test.

Légèrement. UFT Il faut énumérer chaque objet de la classe avant de pouvoir compter jusqu'à la position demandée ; par conséquent, les pages comportant des centaines de contrôles similaires prennent plus de temps à résoudre qu'une description basée sur un nom ou un identifiant unique.

Oui. L'identification basée sur l'IA est actuellement en cours. UFT L'une des versions permet de faire correspondre les contrôles par apparence visuelle et texte d'étiquette plutôt que par position de balisage, de sorte qu'un champ peut être localisé par son apparence même lorsque les valeurs d'index environnantes changent.

Un assistant IA peut analyser une exportation de dépôt, repérer chaque description contenant « index », « emplacement » ou « date de création », et proposer des remplacements à partir des attributs HTML capturés. Chaque suggestion doit ensuite être vérifiée par un humain dans l'application en production avant d'être validée.

Cliquez à nouveau ici si la vidéo n'est pas accessible

Résumez cet article avec :