Identificatore ordinale in QTP/UFTEsempio di identificazione di oggetti
⚡ Riepilogo intelligente
Identificatore ordinale in QTP/UFT è il criterio di spareggio UFT Si applica quando le proprietà obbligatorie e ausiliarie corrispondono ancora a più di un oggetto, utilizzando i valori di Indice, Posizione o Tempo di creazione per selezionare un singolo oggetto univoco.
Che cos'è un identificatore ordinale in QTP/UFT?
An Identificatore ordinale è una proprietà numerica che UFT (in precedenza QTP) aggiunge alla descrizione di un oggetto quando le proprietà obbligatorie e ausiliarie acquisite durante una sessione di registrazione non sono sufficienti a identificare l'oggetto in modo univoco. Invece di fallire, lo strumento ricorre a un contatore che, in sostanza, dice "prendi il terzo oggetto di questa classe".
Per impostazione predefinita, a ogni classe di oggetti di test è associato un identificatore ordinale. Un WebEdit viene numerato in modo diverso da un WinButton, e un Browser viene numerato in modo ancora diverso. È possibile visualizzare o modificare l'identificatore ordinale predefinito per una classe nella finestra Identificazione oggetti.
Come mostra lo screenshot qui sopra, il menu a tendina dell'identificatore ordinale si trova in fondo alla finestra di dialogo Identificazione oggetto, sotto gli elenchi delle proprietà obbligatorie e ausiliarie. Tale posizione non è casuale: rispecchia l'ordine in cui UFT in realtà consulta i tre gruppi.
Ci sono tre tipi di identificatori ordinali in UFT:
- Basato sull'indice
- Basato sulla posizione
- Tempo di creazione
Perché UFT Utilizza gli identificatori ordinali solo come ultima risorsa
Identificazione degli oggetti in UFT Funziona a cascata. Le proprietà obbligatorie vengono apprese per prime. Se non producono una singola corrispondenza, le proprietà ausiliarie vengono aggiunte una per una finché la descrizione non è univoca. Solo quando entrambi i gruppi sono esauriti UFT associa un identificatore ordinale e, in fase di esecuzione, il meccanismo di identificazione intelligente viene consultato prima che il valore ordinale venga considerato attendibile.
Il motivo di tale classificazione è la stabilità. Le proprietà obbligatorie e assistenziali descrivono che cosa un oggetto è: il suo nome, il suo tag HTML, il suo tipo, la sua etichetta. Un identificatore ordinale descrive solo where L'oggetto si trovava seduto al momento della registrazione. Qualsiasi cosa cambi la pagina cambia il numero:
- Uno sviluppatore inserisce un campo nascosto sopra quello che si sta automatizzando.
- Un banner promozionale aggiunge due link extra all'intestazione.
- Un layout responsivo adatta il modulo, ridimensionandolo da due colonne a una sola.
- Il browser si apre in una finestra pop-up prima rispetto a quanto accaduto durante la registrazione del test.
Nessuna di queste modifiche interrompe una descrizione basata su un nome o un ID, ma ognuna sposta silenziosamente ogni valore di indice e posizione sulla pagina. Ecco perché gli ingegneri esperti considerano un identificatore ordinale come un segnale che la descrizione dell'oggetto necessita di modifiche, non come una soluzione definitiva. Lo stesso principio si applica a tutti gli elementi. test di automazione framework in generale, compresa la strategia di localizzazione in Selenium.
Suggerimento: Prima di accettare un identificatore ordinale, apri l'oggetto in Object Spy e cerca un attributo personalizzato stabile. L'aggiunta di tale attributo all'elenco delle proprietà di supporto per la classe spesso elimina la necessità di un identificatore ordinale per ogni oggetto futuro di quel tipo.
Tipi di identificatori ordinali in UFT/QTP
Basato su indici
- Quando viene utilizzato un identificatore ordinale basato su indice, UFT assegna un valore al Index proprietà dell'oggetto durante la registrazione.
- Il valore si basa sull'ordine in cui l'oggetto appare all'interno del codice sorgente, non sullo schermo.
- La prima occorrenza ha il valore 0.
- I valori delle proprietà dell'indice sono specifici per ciascun oggetto, pertanto ogni classe di oggetti di test viene conteggiata separatamente.
- Pertanto, se si utilizza index:=3 per descrivere un oggetto di test WebEdit, UFT cerca il quarto oggetto WebEdit nella pagina.
- Allo stesso modo, se si utilizza index:=1 per descrivere un oggetto di test WebButton, UFT cerca il secondo oggetto WebButton nella pagina.
Basato sulla posizione
- Quando viene utilizzato un identificatore ordinale basato sulla posizione, UFT assegna un valore al posizione proprietà dell'oggetto che lo identifica in modo univoco.
- Il valore si basa sull'ordine in cui l'oggetto appare all'interno della finestra, della cornice o della finestra di dialogo, in relazione ad altri oggetti con proprietà identiche.
- La prima occorrenza dell'oggetto è 0.
- I valori vengono assegnati in colonne, dall'alto verso il basso e poi da sinistra a destra.
- La posizione è l'identificatore ordinale predefinito per la maggior parte degli standard Windows classi di oggetti di test, dove il layout visivo è più stabile dell'ordine del markup.
Tempo di creazione
- Quando viene utilizzato l'identificatore ordinale del tempo di creazione, UFT assegna un valore al tempo di creazione proprietà di un oggetto browser.
- Questo identificatore è disponibile solo per l'ambiente Web e solo per gli oggetti di test del browser.
- Il valore indica l'ordine in cui il browser è stato aperto rispetto agli altri browser aperti.
- Il primo browser aperto durante l'esecuzione riceve creationtime:=0, e i browser successivi ricevono 1, 2, 3 e così via.
- Se un browser viene chiuso, i browser rimanenti mantengono i loro valori originali anziché essere rinumerati.
Indice vs Posizione vs Data di creazione: tabella comparativa
I tre identificatori rispondono a tre domande diverse, e la scelta di quello sbagliato è una causa frequente di guasti intermittenti.
| Aspetto | Indice | Località | Tempo di creazione |
|---|---|---|---|
| Nome della proprietà | Index | posizione | tempo di creazione |
| Base di ordinazione | Ordine nel codice sorgente / gerarchia degli oggetti | Posizione dello schermo all'interno della finestra, del frame o della finestra di dialogo | Ordine di apertura delle istanze del browser |
| Regola di conteggio | Sequenziale, per classe di oggetti di test | Colonne, dall'alto verso il basso e poi da sinistra a destra | Sequenziale, per ogni istanza del browser |
| Primo valore | 0 | 0 | 0 |
| Si applica a | Web e Windows classi | Principalmente standard Windows classi | Solo oggetti del browser |
| Si interrompe quando | Modifiche all'ordine di markup | Il layout viene riposizionato o ridimensionato | Windows apri in una sequenza diversa |
| qui utilizzati per | Controlli a griglia o tabella ripetuti | Moduli desktop legacy con layout fisso | Flussi web multi-finestra come i pop-up di pagamento |
Come impostare l'identificatore ordinale nel repository degli oggetti
L'identificatore ordinale è configurato per ogni classe di oggetti di test e viene applicato automaticamente a ogni oggetto di quella classe che UFT apprende in seguito. Gli oggetti già presenti nel repository non vengono aggiornati retroattivamente.
- Apri UFT e seleziona Strumenti > Identificazione degli oggetti.
- Scegli l'ambiente, ad esempio Web o Standard Windows, dal menu a tendina Ambiente.
- Seleziona la classe dell'oggetto di prova che desideri modificare, ad esempio WebEdit o WinButton.
- Nel Identificatore ordinale Nella sezione, selezionare Indice, Posizione, Data di creazione o Nessuno.
- Clicchi OK e riapprendere l'oggetto in modo che venga acquisito il nuovo valore ordinale.
- Apri il Repository degli oggetti, seleziona l'oggetto e verifica che la proprietà ordinale appaia ora nell'elenco delle descrizioni.
Selezione Nona disabilita completamente il meccanismo di fallback per quella classe. UFT genererà quindi un errore di identificazione anziché fare una supposizione, che è spesso il comportamento desiderato in una suite in cui un'errata identificazione silenziosa è più dannosa di un errore pulito. Registrare le proprie aspettative in un documento ben scritto caso di prova rende esplicito tale compromesso per l'intera squadra.
⚠️ Attenzione: La modifica dell'identificatore ordinale di una classe è un'impostazione a livello di macchina, non a livello di test. Se non viene esportato e condiviso, gli script che funzionano correttamente sulla tua macchina potrebbero non funzionare sulla macchina di un collega o sull'agente di compilazione.
Come utilizzare gli identificatori ordinali in Descriptprogrammazione viva
Nella programmazione descrittiva non esiste una finestra di dialogo per l'identificazione degli oggetti. L'ordinale viene scritto direttamente nella stringa di descrizione, esattamente come qualsiasi altro nome di proprietà, ed è sempre basato su zero.
' 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
Produzione:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Un modello più sicuro è quello di combinare le proprietà reali con ChildObjects Pertanto, l'ordinale viene convalidato prima di essere utilizzato. L'esempio seguente presuppone una pagina contenente cinque oggetti WebEdit corrispondenti e un indice pari a 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
Produzione:
Index 9 is out of range; only 5 objects match
Questa protezione trasforma un errore di runtime poco utile del tipo "Impossibile identificare l'oggetto" in un messaggio leggibile, il che è importante quando i risultati vengono pubblicati in un difetto tracker o a HP ALM integrato con UFT.
Errori comuni nell'uso degli identificatori ordinali
La maggior parte dei difetti correlati agli ordinali trace torniamo a un piccolo insieme di errori ricorrenti.
- Contando da 1. Ogni identificatore ordinale inizia da 0. Scrivere index:=1 per il primo campo è l'errore più comune e produce un errore di uno che sembra un problema di temporizzazione.
- Confondere l'indice con la posizione geografica. L'indice segue il codice sorgente; la posizione segue lo schermo. In una pagina in cui il CSS riordina gli elementi, i due valori differiscono e si scambianoping In questo modo, prendono di mira silenziosamente il controllo sbagliato.
- Utilizzo di CreationTime al di fuori dell'ambiente Web. Questa proprietà esiste solo sugli oggetti Browser. Applicandola a un oggetto Page, Frame o Window si verifica un errore di proprietà non supportata.
- Inserimento fisso di un valore ordinale in una funzione condivisa. Una funzione riutilizzabile che presuppone index:=2 diventa inutilizzabile nel momento in cui viene richiamata da una seconda schermata con un layout diverso.
- Lasciare gli ordinali nel repository dopo che l'applicazione si è stabilizzata. Una volta che gli sviluppatori avranno aggiunto gli ID stabili, rivedete gli oggetti e sostituite l'ordinale con la nuova proprietà.
- Affidarsi agli ordinali all'interno di cicli su griglie. Preferire
ChildObjects, che restituisce una raccolta in tempo reale, quindi il conteggio riflette la pagina corrente anziché quella registrata.
Risorse
Scarica le pagine web utilizzate nel tutorial precedente per esercitarti in autonomia.
Gli identificatori ordinali sono solo una piccola parte del modello di identificazione degli oggetti. Per vedere come si inseriscono nel flusso di lavoro più ampio, continua con il documento completo. QTP/UFT serie di formazione, rivedere i fondamenti in test del software, impara come vengono gestiti i risultati nel Tutorial HP ALMe confrontare le strategie di localizzazione con il Selenium lezione.
DOMANDE FREQUENTI
Clicchi Qui. se il video non è accessibile


