Come funziona l'identificazione degli oggetti in QTP/UFT?

⚡ Riepilogo intelligente

Identificazione degli oggetti in QTP/UFT Determina come lo strumento riconosce ogni elemento dell'interfaccia grafica durante un'esecuzione di test, confrontando le proprietà dell'oggetto di test memorizzate con le proprietà dell'oggetto di runtime in tempo reale, in modo che gli script continuino a funzionare anche quando cambia il layout dello schermo.

  • 🎯 Modello oggetto di test: UFT Confronta un oggetto di test memorizzato con l'oggetto di runtime in tempo reale a ogni passaggio per identificare i controlli indipendentemente dalla posizione sullo schermo.
  • 🗂️ proprietà obbligatorie: UFT registra sempre un set predefinito di proprietà per ogni classe di oggetti all'interno del Repository degli oggetti.
  • 🧩 Caratteristiche di supporto: UFT Aggiunge le proprietà di backup una alla volta solo quando il set obbligatorio da solo non è sufficiente a creare una descrizione univoca.
  • ⚙️ Finestra di dialogo Identificazione oggetto: Strumenti > Identificazione oggetti consente ai tester di aggiungere, rimuovere o riordinare le proprietà in base all'ambiente e alla classe di oggetti.
  • ️ Spia di oggetti: Passa il mouse sopra un controllo per esaminarne le proprietà di test e di runtime prima di decidere su quali fare affidamento.
  • 🔢 Identificatori ordinali: Indice, posizione e ora di creazione risolvono i casi di parità tra oggetti che rimangono identici dopo ogni controllo delle proprietà.
  • 🧠 Identificazione intelligente: Questo meccanismo di fallback viene eseguito prima degli identificatori ordinali e spesso recupera un oggetto la cui descrizione appresa non è più valida.

Che cos'è l'identificazione degli oggetti in UFT/QTP?

L'identificazione dell'oggetto è il meccanismo UFT/QTP viene utilizzato per riconoscere un elemento GUI sullo schermo in modo che uno script possa agire su di esso in modo affidabile, esecuzione dopo esecuzione. Durante una sessione di registrazione, UFT Il sistema analizza un piccolo insieme di proprietà dell'oggetto sotto il puntatore del mouse e le memorizza; durante la riproduzione, confronta questi valori memorizzati con le proprietà di ogni oggetto effettivamente presente e seleziona quello che corrisponde in modo univoco, indipendentemente dalla posizione attuale dell'oggetto sullo schermo.

L'oggetto memorizzato, insieme alle proprietà UFT ricorda per questo, si chiama il Oggetto di prova. L'elemento corrispondente che esiste sullo schermo durante l'esecuzione del test è il Oggetto in fase di esecuzioneIl confronto tra i due ad ogni passaggio è il fondamento di ciò che Micro Focus chiama il Modello oggetto di test, ed è per questo che un UFT Lo script continua a funzionare anche dopo che un pulsante si sposta di pochi pixel o una pagina viene aggiornata nello stile.

Repository di oggetti e componenti aggiuntivi

UFT mantiene ogni oggetto di test appreso, insieme alle sue proprietà memorizzate, all'interno del Repository di oggetti. Add-ins dire Test veloce Il sistema conosce in anticipo a quale tecnologia appartiene uno schermo, quindi lo strumento sa già quale set di proprietà si applica e non deve fare supposizioni, riducendo così il tempo necessario per apprendere un oggetto.

Clicchi Qui. se il video non è accessibile

Ogni oggetto UFT I record possono contenere decine di proprietà. In un ambiente web, un singolo pulsante può esporre il suo nome, il tag HTML, il tipo, la classe, l'indice e altro ancora. Registrare tutte queste informazioni per ogni oggetto è tecnicamente possibile, ma raramente utile, come mostra l'immagine seguente per una tipica voce di un repository di oggetti.

Repository di oggetti

If UFT Se si tentasse di ricordare ogni proprietà disponibile per ogni oggetto, il repository degli oggetti diventerebbe enormemente grande e l'esecuzione dello script rallenterebbe notevolmente. Per evitare ciò, QTP non salva tutte le proprietà per impostazione predefinita: salva un piccolo set tipico per ogni tipo di oggetto, scelto per renderlo identificazione univoca possibile senza sovraccarico. Questo breve elenco di proprietà, deciso separatamente per ogni ambiente e classe di oggetti, è configurato nelle impostazioni di identificazione degli oggetti, che tratteremo in seguito.

Oggetto Descriptione: proprietà obbligatorie e di supporto

La proprietà di un oggetto e il suo valore insieme formano ciò che UFT chiama il Oggetto Descriptione — la combinazione esatta che lo strumento utilizza per selezionare un elemento da ogni altro oggetto sulla pagina. Per un WebButton, ad esempio, la proprietà Nome con il valore Accedi è di per sé spesso sufficiente a formare un oggetto utilizzabile Descriptione.

Per rivedere o modificare questo comportamento, apri Strumenti > Identificazione degli oggetti interno UFTLa finestra di dialogo Identificazione oggetti elenca tutti gli ambienti attualmente caricati; selezionandone uno, le classi degli oggetti vengono popolate automaticamente. UFT supporta questa funzionalità e il pannello a destra mostra esattamente quali proprietà vengono memorizzate per gli oggetti di quella classe. L'elenco è diviso in due gruppi:

  1. Proprietà obbligatorie vengono memorizzati per impostazione predefinita per ogni oggetto di quella classe, indipendentemente dal fatto che siano effettivamente necessari per distinguerlo dagli altri oggetti della stessa classe.
  2. Proprietà assistenziali vengono memorizzati solo quando le sole proprietà obbligatorie non sono sufficienti a creare una descrizione univoca. UFT Il sistema scorre questo elenco una proprietà alla volta finché l'oggetto non diventa univoco.

Un'immagine web rende più facile visualizzare la regola nella pratica.

Oggetto Descriptione, proprietà obbligatorie e assistive

  • UFT Memorizza sempre il testo alternativo, il tag HTML e il tipo di immagine per un'immagine web, anche quando il solo testo alternativo è già univoco.
  • Se le proprietà obbligatorie non possono creare una descrizione univoca, UFT aggiunge la proprietà class dall'elenco di supporto.
  • Una volta che una proprietà rende la descrizione unica, UFT Smette di aggiungere altro: salta il nome del file e l'altezza se la classe era già sufficiente, salta l'altezza se era necessario il nome del file e così via.
  • Supponiamo che solo la proprietà della classe venga registrata al momento della registrazione. Al momento dell'esecuzione, UFT Non distingue più quali proprietà fossero obbligatorie e quali facoltative: confronta semplicemente ogni proprietà nella descrizione salvata con l'oggetto in fase di esecuzione.
  • Se anche una sola proprietà memorizzata non corrisponde, il passaggio fallisce: una descrizione univoca è binaria, non si tratta di una corrispondenza approssimativa.
Aspetto Proprietà obbligatorie Proprietà assistenziali
Quando conservato Sempre, per ogni oggetto di quella classe Solo quando le proprietà obbligatorie non possono formare una descrizione univoca
Configurato in Finestra di dialogo Identificazione oggetto, Elenco obbligatorio Finestra di dialogo Identificazione oggetto, Elenco di assistenza
Ordine di utilizzo Appreso prima, incondizionatamente Aggiunti uno alla volta finché l'oggetto non è unico
Trattamento in tempo reale Paragonabile alle proprietà di assistenza Confrontato allo stesso modo delle proprietà obbligatorie

Il video qui sotto illustra nel dettaglio questo flusso di lavoro che distingue tra procedure obbligatorie e procedure assistenziali.

Finestra di dialogo per l'identificazione degli oggetti Box e Object Spy

La finestra di dialogo Identificazione oggetti non è solo un visualizzatore, ma è il luogo in cui un tester regola l'aggressività UFT Identifica gli oggetti per un intero ambiente. Riordinare, aggiungere o rimuovere una proprietà in questo punto modifica ciò che viene appreso per ogni oggetto di quella classe da quel momento in poi, non solo per quello attualmente in fase di registrazione. Il flusso di lavoro tipico è il seguente:

  1. Apri UFT e andare a Strumenti > Identificazione degli oggetti.
  2. Scegli un ambiente (Web, Windows, Java(e così via) dal menu a tendina.
  3. Seleziona una classe di oggetto, come WebButton o WinEdit, dall'elenco a sinistra.
  4. Sposta le proprietà tra gli elenchi Obbligatorio e Assistivo oppure riordina l'elenco Assistivo per controllare quale proprietà UFT prova prima.
  5. Attiva o disattiva l'identificazione intelligente per quella classe utilizzando la casella di controllo nella parte superiore del pannello.

Le modifiche apportate qui saranno valide anche la prossima volta UFT apprende un oggetto di quella classe: le voci già salvate nel Repository degli oggetti mantengono la loro descrizione originale finché l'oggetto non viene registrato nuovamente o aggiornato manualmente.

Utilizzo di Object Spy per ispezionare le proprietà

Prima di modificare l'elenco obbligatorio o di supporto, la maggior parte dei tester controlla l'aspetto effettivo delle proprietà di un oggetto con Spia di oggetti. Puntando il cursore spia su qualsiasi controllo dell'applicazione in fase di test, vengono elencate fianco a fianco sia le proprietà dell'oggetto di test che quelle di runtime, insieme ai metodi UFT è possibile farvi ricorso — utile quando una proprietà obbligatoria continua a cambiare tra le diverse build e deve essere sostituita con una più stabile.

Identificatori ordinali: indice, posizione e tempo di creazione

A volte, anche con tutte le proprietà obbligatorie e ausiliarie, due o più oggetti appaiono identici, ad esempio tre caselle di controllo con lo stesso nome, classe ed etichetta. Proprio per questa situazione UFT si rifugia in un identificatore ordinale, un valore di backup che classifica oggetti altrimenti identici in base alla loro posizione anziché alle loro proprietà.

Identificatore ordinale Proprietà Ordine assegnato Si applica a
Indice Indice Ordine in cui l'oggetto appare nel codice sorgente sottostante, a partire da 0 Qualsiasi classe di oggetti
Località Località Posizione sullo schermo dall'alto verso il basso, poi da sinistra a destra, a partire da 0 Qualsiasi classe di oggetti
Tempo di creazione Tempo di creazione Ordine di apertura della finestra del browser, a partire da 0 Solo oggetti del browser

UFT L'oggetto Index apprende un identificatore ordinale solo quando le proprietà obbligatorie e ausiliarie non sono effettivamente in grado di distinguere due oggetti, poiché il valore è relativo e può variare se il layout della pagina cambia, anche se l'oggetto stesso rimane invariato. Il frammento di codice VBScript riportato di seguito utilizza Index per fare clic sul secondo di due collegamenti con lo stesso nome.

Dim objBrowser, objPage
Set objBrowser = Browser("title:=Guru99 Bank")
Set objPage = objBrowser.Page("title:=Guru99 Bank")
' Index:=1 clicks the second Link named "Manage Order" (index starts at 0)
objPage.Link("name:=Manage Order", "index:=1").Click

I valori di Index e Location sono specifici della classe di oggetti indicata nell'istruzione, quindi Indice:=3 In un oggetto WebEdit, la ricerca viene effettuata solo tra gli oggetti WebEdit, mentre lo stesso valore in un oggetto WebElement generico viene conteggiato in tutti gli oggetti web presenti nella pagina, indipendentemente dal tipo.

Dove si colloca l'identificazione intelligente

Identificazione degli oggetti in UFT non si ferma alla descrizione appresa. Quando non è possibile trovare una corrispondenza univoca, UFT esegue il processo in un ordine fisso: prima controlla le proprietà obbligatorie e assistive apprese, poi qualsiasi identificatore di relazione visiva, poi Smart Identification se tale meccanismo è abilitato per la classe, e solo come ultima risorsa un identificatore ordinale.

Smart Identification si colloca volutamente tra la descrizione appresa e l'identificatore ordinale. Ricostruisce un elenco di candidati utilizzando le proprietà principali di una classe e lo restringe con quelle opzionali, in modo da poter spesso recuperare un oggetto la cui descrizione appresa non è più valida (ad esempio, un pulsante rinominato) senza dover accedere al Repository degli oggetti. Poiché questo passaggio di ricerca aggiuntivo richiede tempo, la maggior parte dei team lo abilita per le classi in cui l'identificazione è fragile e si affida agli identificatori ordinali solo quando la posizione è effettivamente l'unico elemento distintivo rimasto, come nel caso di un gruppo di pulsanti radio senza etichetta.

DOMANDE FREQUENTI

Il repository degli oggetti memorizza ogni oggetto di test appreso e le relative proprietà salvate. Le impostazioni di identificazione degli oggetti, accessibili da Strumenti > Identificazione degli oggetti, controllano quali proprietà UFT registrare i dati in quel repository per ciascuna classe di oggetti in primo luogo.

UFT Il processo si basa su identificatori di relazione visiva, identificazione intelligente e, infine, un identificatore ordinale. Se nessuno di questi produce una singola corrispondenza, il passaggio genera un errore in fase di esecuzione perché nessun oggetto soddisfa tutte le proprietà memorizzate.

Registrare ogni proprietà disponibile ingombrerebbe l'Object Repository e rallenterebbe l'esecuzione dello script. UFT salva invece un piccolo set tipico per ogni classe di oggetti, aggiungendo proprietà di supporto solo quando quelle obbligatorie non possono formare una descrizione univoca.

Sì. Gli strumenti basati sull'intelligenza artificiale possono analizzare il traffico di produzione o la struttura del DOM per suggerire proprietà più stabili e meno soggette a instabilità prima della registrazione, e possono segnalare gli oggetti le cui proprietà obbligatorie cambiano frequentemente tra una build e l'altra: i tester verificano comunque i suggerimenti.

Non del tutto. I localizzatori auto-riparanti riducono gli errori dovuti a elementi rinominati o spostati, ma gli identificatori ordinali riescono comunque a risolvere oggetti che sono effettivamente identici in ogni proprietà, come ad esempio diverse caselle di controllo senza etichetta in fila.

Riassumi questo post con: