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.

  • 🎯 Ostatnia deska ratunku: UFT dodaje identyfikator porządkowy tylko wtedy, gdy obowiązkowe i wspomagające właściwości nie są w stanie uczynić opisu unikalnym.
  • 🔢 Indeks: Numbers obiekty tej samej klasy według kolejności w kodzie źródłowym, zaczynając od 0, więc index:=3 wskazuje na czwarte dopasowanie.
  • 📍 Lokalizacja: Numbers obiekty według położenia na ekranie, w oknie, ramce lub oknie dialogowym, od góry do dołu i od lewej do prawej.
  • 🕒 Czas utworzenia: Dotyczy tylko obiektów przeglądarki i rejestruje kolejność, w jakiej otwierano poszczególne wystąpienia przeglądarki.
  • 🗂️. Identyfikacja obiektu: Domyślny typ porządkowy dla każdej klasy obiektów testowych można edytować w menu Narzędzia > Identyfikacja obiektu.
  • ⌨️. Descriptprogramowanie na żywo: Przekaż indeks, lokalizację lub czas utworzenia jako zwykłą właściwość wewnątrz ciągu opisu obiektu.
  • ⚠️ Kruchość: Wartości porządkowe zmieniają się przy każdej zmianie układu strony, dlatego traktuj je jako rozwiązanie tymczasowe, a nie jako wybór projektowy.

Identyfikator porządkowy w QTP/UFT wyjaśnione za pomocą indeksu, lokalizacji i czasu utworzenia

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.

Ustawienie identyfikatora porządkowego w QTP/UFT Okno identyfikacji 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:

  1. Oparte na indeksie
  2. Lokalizacja w oparciu
  3. 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.

  1. Otwarte UFT na której: Narzędzia > Identyfikacja obiektów.
  2. Wybierz środowisko, np. Web lub Standard Windowsz listy rozwijanej Środowisko.
  3. Wybierz klasę obiektu testowego, którą chcesz zmienić, np. WebEdit lub WinButton.
  4. W Identyfikator porządkowy wybierz opcję Indeks, Lokalizacja, Czas utworzenia lub Brak.
  5. Kliknij OK i ponownie nauczyć obiekt, tak aby nowa wartość porządkowa została przechwycona.
  6. 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

Wartość domyślna różni się w zależności od klasy. Większość obiektów testowych sieci Web, takich jak WebEdit i WebButton, domyślnie ustawia wartość Index, obiekty Browser domyślnie CreationTime, a Standard Windows Domyślną wartością klas jest Lokalizacja. Każda domyślna wartość jest widoczna i edytowalna w oknie Identyfikacja obiektu.

Najpierw uruchamiana jest inteligentna identyfikacja. UFT próbuje poznanego opisu, następnie Inteligentnej Identyfikacji, jeśli jest włączona dla klasy, i powraca do identyfikatora porządkowego tylko wtedy, gdy żadne z nich nie wygeneruje ani jednego zgodnego obiektu.

Tak. Ustaw rozwijaną listę identyfikatorów porządkowych na Brak dla klasy w oknie Identyfikacja obiektu. UFT następnie zgłasza błąd identyfikacji zamiast zgadywać, co jest bezpieczniejsze w przypadku zestawów, w których kliknięcie niewłaściwego obiektu mogłoby uszkodzić dane testowe.

Nieco. UFT musi wyliczyć każdy obiekt klasy zanim będzie mógł zaliczyć go do żądanej pozycji, więc strony z setkami podobnych kontrolek wymagają więcej czasu na rozwiązanie niż opis zbudowany na podstawie unikalnej nazwy lub identyfikatora.

Tak. Identyfikacja oparta na sztucznej inteligencji w chwili obecnej UFT Kontrolki są aktualizowane na podstawie wyglądu wizualnego i tekstu etykiety, a nie położenia znacznika. Dzięki temu pole można zlokalizować na podstawie jego wyglądu, nawet gdy zmieniają się otaczające je wartości indeksów.

Asystent AI może przeskanować eksport repozytorium, oznaczyć każdy opis zawierający indeks, lokalizację lub czas utworzenia i zaproponować zamienniki na podstawie przechwyconych atrybutów HTML. Człowiek musi jednak zweryfikować każdą sugestię w działającej aplikacji przed jej zatwierdzeniem.

Kliknij w tym miejscu jeśli film nie jest dostępny

Podsumuj ten post następująco: