Identyfikator porządkowy w QTP/UFT: Przykład identyfikacji obiektu
⚡ Inteligentne podsumowanie
Identyfikator porządkowy w QTP/UFT jest decydującym czynnikiem UFT stosuje się, gdy obowiązkowe i pomocnicze właściwości nadal pasują do więcej niż jednego obiektu, korzystając z wartości Index, Location lub CreationTime w celu wybrania pojedynczego, unikalnego obiektu.

Czym jest identyfikator porządkowy w QTP/UFT?
An Identyfikator porządkowy jest właściwością liczbową, która UFT (dawniej QTP) dodaje do opisu obiektu, gdy obowiązkowe i pomocnicze właściwości zarejestrowane podczas sesji nagrywania nie wystarczają do jednoznacznej identyfikacji obiektu. Zamiast zawieść, narzędzie korzysta z licznika, który w efekcie mówi: „weź trzeci obiekt z tej klasy”.
Domyślnie dla każdej klasy obiektu testowego istnieje typ identyfikatora porządkowego. Edytor WebEdit ma inną numerację niż WinButton, a przeglądarka również ma inną numerację. Domyślny identyfikator porządkowy klasy można wyświetlić lub zmodyfikować w oknie Identyfikacja obiektu.
Jak widać na powyższym zrzucie ekranu, lista rozwijana „Identyfikator porządkowy” znajduje się na dole okna dialogowego „Identyfikacja obiektu”, pod listami właściwości obowiązkowych i pomocniczych. To położenie nie jest przypadkowe: odzwierciedla ono kolejność, w jakiej… UFT faktycznie konsultuje się z trzema grupami.
Istnieją trzy typy identyfikatorów porządkowych w UFT:
- Oparte na indeksie
- Lokalizacja w oparciu
- Czas utworzenia
Czemu UFT Używa identyfikatorów porządkowych tylko w ostateczności
Identyfikacja obiektów w UFT działa kaskadowo. Najpierw uczymy się właściwości obowiązkowych. Jeśli nie przyniosą one ani jednego dopasowania, właściwości wspomagające są dodawane pojedynczo, aż opis będzie unikalny. Dopiero po wyczerpaniu obu grup… UFT dołącz identyfikator porządkowy, a w czasie wykonywania konsultowany jest mechanizm inteligentnej identyfikacji przed uznaniem wartości porządkowej za zaufaną.
Powodem takiego rankingu jest stabilność. Właściwości obowiązkowe i pomocnicze opisują co Obiekt to: jego nazwa, znacznik HTML, typ i etykieta. Identyfikator porządkowy opisuje tylko gdzie Obiekt znajdował się w momencie nagrywania. Każda zmiana strony powoduje zmianę numeru:
- Programista wstawia ukryte pole nad polem, które automatyzujesz.
- Baner promocyjny dodaje dwa dodatkowe linki do nagłówka.
- W układzie responsywnym formularz składa się z dwóch kolumn i zostaje przekształcony w jedną.
- Okno przeglądarki otwiera się wcześniej, niż miało to miejsce podczas rejestrowanego przebiegu.
Żadna z tych zmian nie narusza opisu zbudowanego na nazwie lub identyfikatorze, ale każda z nich po cichu zmienia każdy indeks i wartość lokalizacji na stronie. Dlatego doświadczeni inżynierowie traktują identyfikator porządkowy jako sygnał, że opis obiektu wymaga dopracowania, a nie jako gotowe rozwiązanie. Ta sama zasada obowiązuje w całym tekście. testowanie automatyzacji ramy ogólnie, w tym strategia lokalizatora w Selenium.
💡 Wskazówka: Przed zaakceptowaniem identyfikatora porządkowego należy otworzyć obiekt w Object Spy i poszukać stabilnego atrybutu niestandardowego. Dodanie tego atrybutu do listy właściwości pomocniczych klasy często eliminuje potrzebę stosowania liczby porządkowej w każdym przyszłym obiekcie tego typu.
Typy identyfikatorów porządkowych w UFT/QTP
Oparte na indeksie
- W przypadku użycia identyfikatora porządkowego opartego na indeksie, UFT przypisuje wartość do wskaźnik właściwość obiektu podczas nagrywania.
- Wartość ta zależy od kolejności, w jakiej obiekt pojawia się w kodzie źródłowym, a nie na ekranie.
- Pierwsze wystąpienie ma wartość 0.
- Wartości właściwości indeksu są specyficzne dla obiektu, dlatego każda klasa obiektu testowego jest liczona osobno.
- Dlatego jeśli użyjesz index:=3 do opisu obiektu testowego WebEdit, UFT wyszukuje czwarty obiekt WebEdit na stronie.
- Podobnie, jeśli użyjesz index:=1 do opisania obiektu testowego WebButton, UFT wyszukuje drugi obiekt WebButton na stronie.
Lokalizacja w oparciu
- W przypadku użycia identyfikatora porządkowego opartego na lokalizacji, UFT przypisuje wartość do lokalizacja właściwość obiektu umożliwiająca jego jednoznaczną identyfikację.
- Wartość ta zależy od kolejności, w jakiej obiekt pojawia się w oknie, ramce lub oknie dialogowym, w odniesieniu do innych obiektów o identycznych właściwościach.
- Pierwsze wystąpienie obiektu to 0.
- Wartości są przypisywane w kolumnach, od góry do dołu i od lewej do prawej.
- Lokalizacja jest domyślnym identyfikatorem porządkowym dla większości standardowych Windows klasy obiektów testowych, w których układ wizualny jest bardziej stabilny niż kolejność znaczników.
Czas utworzenia
- Gdy używany jest identyfikator porządkowy czasu utworzenia, UFT przypisuje wartość do czas stworzenia właściwość obiektu przeglądarki.
- Ten identyfikator jest dostępny tylko dla środowiska internetowego i tylko dla obiektów testowych przeglądarki.
- Wartość ta wskazuje kolejność, w jakiej przeglądarka została otwarta względem innych otwartych przeglądarek.
- Pierwsza przeglądarka otwarta podczas wykonywania operacji otrzymuje parametr creationtime:=0, a kolejne przeglądarki otrzymują wartości 1, 2, 3 itd.
- Jeśli przeglądarka zostanie zamknięta, pozostałe przeglądarki zachowają swoje pierwotne wartości i nie zostaną ponumerowane ponownie.
Indeks kontra lokalizacja kontra czas utworzenia: tabela porównawcza
Trzy identyfikatory odpowiadają na trzy różne pytania, a wybranie niewłaściwego jest częstą przyczyną okresowych awarii.
| WYGLĄD | wskaźnik | Lokalizacja | Czas utworzenia |
|---|---|---|---|
| Nazwa właściwości | wskaźnik | lokalizacja | czas stworzenia |
| Podstawa zamawiania | Porządek w hierarchii kodu źródłowego/obiektu | Pozycja ekranu wewnątrz okna, ramki lub okna dialogowego | Kolejność otwierania instancji przeglądarki |
| Zasada liczenia | Sekwencyjnie, według klasy obiektów testowych | Kolumny, od góry do dołu, a następnie od lewej do prawej | Sekwencyjnie, na instancję przeglądarki |
| Pierwsza wartość | 0 | 0 | 0 |
| Dotyczy | Sieć i Windows Klasy | Głównie Standard Windows Klasy | Tylko obiekty przeglądarki |
| Przerwy, kiedy | Zmiany kolejności znaczników | Zmieniono położenie lub rozmiar układu | Windows otwórz w innej kolejności |
| Najlepiej stosować do | Powtarzające się elementy sterujące siatką lub tabelą | Starsze formularze na komputerach stacjonarnych z ustalonym układem | Przepływy internetowe obejmujące wiele okien, takie jak wyskakujące okienka płatności |
Jak ustawić identyfikator porządkowy w repozytorium obiektów
Identyfikator porządkowy jest konfigurowany dla każdej klasy obiektu testowego i jest automatycznie stosowany do każdego obiektu tej klasy. UFT uczy się później. Obiekty już istniejące w repozytorium nie są aktualizowane wstecznie.
- Otwarte UFT na której: Narzędzia > Identyfikacja obiektów.
- Wybierz środowisko, np. Web lub Standard Windowsz listy rozwijanej Środowisko.
- Wybierz klasę obiektu testowego, którą chcesz zmienić, np. WebEdit lub WinButton.
- W Identyfikator porządkowy wybierz opcję Indeks, Lokalizacja, Czas utworzenia lub Brak.
- Kliknij OK i ponownie nauczyć obiekt, tak aby nowa wartość porządkowa została przechwycona.
- Otwórz repozytorium obiektów, wybierz obiekt i sprawdź, czy właściwość porządkowa jest teraz wyświetlana na liście opisów.
Wybór żaden całkowicie wyłącza opcję zapasową dla tej klasy. UFT spowoduje błąd identyfikacji zamiast zgadywania, co często jest pożądanym zachowaniem w pakiecie, gdzie cicha błędna identyfikacja jest bardziej szkodliwa niż czysta awaria. Zapisanie swoich oczekiwań w dobrze spisanym walizka testowa wyjaśnia ten kompromis całemu zespołowi.
⚠️ Ostrzeżenie: Zmiana identyfikatora porządkowego klasy jest ustawieniem na poziomie maszyny, a nie testu. Jeśli nie zostanie on wyeksportowany i udostępniony, skrypty przekazywane na Twojej maszynie mogą zakończyć się niepowodzeniem na maszynie kolegi lub na agencie kompilacji.
Jak używać identyfikatorów porządkowych w Descriptprogramuję
W programowaniu opisowym nie ma dialogu identyfikacji obiektu. Liczba porządkowa jest zapisywana bezpośrednio w ciągu opisu, tak jak każda inna nazwa właściwości, i zawsze zaczyna się od zera.
' 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
Wyjście:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Bezpieczniejszym rozwiązaniem jest łączenie nieruchomości z ChildObjects Zatem liczba porządkowa jest weryfikowana przed użyciem. Poniższy przykład zakłada stronę zawierającą pięć pasujących obiektów WebEdit i indeks 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
Wyjście:
Index 9 is out of range; only 5 objects match
Ta ochrona zmienia niepomocny błąd czasu wykonania „Nie można zidentyfikować obiektu” w czytelną wiadomość, co ma znaczenie, gdy wyniki są publikowane w przypadku defektu tracker lub do HP ALM zintegrowany z UFT.
Typowe błędy przy używaniu identyfikatorów porządkowych
Większość defektów związanych z liczebnikami porządkowymi tracwracamy do małego zestawu powtarzających się błędów.
- Licząc od 1. Każdy identyfikator porządkowy zaczyna się od 0. Najczęstszym błędem jest zapisanie index:=1 w pierwszym polu. Powoduje to błąd typu „off-by-one”, który wygląda na problem z czasem.
- Mylenie indeksu z lokalizacją. Indeks podąża za kodem źródłowym; lokalizacja podąża za ekranem. Na stronie, na której CSS zmienia kolejność elementów, te dwie wartości różnią się i zamieniają się miejscami.ping ich po cichu celuje w złą kontrolę.
- Korzystanie z CreationTime poza środowiskiem internetowym. Ta właściwość istnieje tylko w obiektach przeglądarki. Zastosowanie jej do obiektu strony, ramki lub okna powoduje błąd nieobsługiwanej właściwości.
- Zakodowanie na stałe liczby porządkowej w funkcji współdzielonej. Funkcja wielokrotnego użytku, która zakłada index:=2, staje się bezużyteczna w momencie wywołania jej na drugim ekranie o innym układzie.
- Pozostawienie liczb porządkowych w repozytorium po ustabilizowaniu się aplikacji. Gdy programiści dodadzą stabilne identyfikatory, należy ponownie przejrzeć obiekty i zastąpić liczbę porządkową nową właściwością.
- Poleganie na liczbach porządkowych wewnątrz pętli nad siatkami. Woleć
ChildObjects, która zwraca kolekcję na żywo, więc liczba odzwierciedla bieżącą stronę, a nie stronę nagraną.
Zasoby
Pobierz strony internetowe użyte w powyższym samouczku, aby ćwiczyć samodzielnie
Identyfikatory porządkowe stanowią niewielki element modelu identyfikacji obiektów. Aby zobaczyć, jak wpisują się w szerszy obieg pracy, przejdź do pełnego QTP/UFT seria szkoleniowa, przejrzyj podstawy w Testowanie oprogramowaniadowiedz się, jak zarządzać wynikami w Samouczek HP ALMi porównaj strategie lokalizacyjne z Selenium Tutorial.
FAQ
Kliknij w tym miejscu jeśli film nie jest dostępny

