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.
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.
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:
- 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.
- 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.
- 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:
- Apri UFT e andare a Strumenti > Identificazione degli oggetti.
- Scegli un ambiente (Web, Windows, Java(e così via) dal menu a tendina.
- Seleziona una classe di oggetto, come WebButton o WinEdit, dall'elenco a sinistra.
- Sposta le proprietà tra gli elenchi Obbligatorio e Assistivo oppure riordina l'elenco Assistivo per controllare quale proprietà UFT prova prima.
- 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.



