Sıralı Tanımlayıcı QTP/UFTNesne Tanımlama Örneği

⚡ Akıllı Özet

Sıralı Tanımlayıcı QTP/UFT eşitliği bozan faktördür. UFT Zorunlu ve yardımcı özelliklerin birden fazla nesneyle eşleşmesi durumunda, Index, Location veya CreationTime değerlerini kullanarak tek bir benzersiz nesne seçilir.

  • 🎯 Son çare: UFT Zorunlu ve yardımcı özellikler bir açıklamayı benzersiz kılmakta başarısız olduktan sonra yalnızca sıra numarası belirten bir tanımlayıcı ekler.
  • 🔢 Dizin: Numbers Aynı sınıfa ait nesneler, kaynak kod sırasına göre 0'dan başlayarak listelenir; bu nedenle index:=3 dördüncü eşleşmeyi hedefler.
  • 📍 Lokasyon: Numbers Pencere, çerçeve veya iletişim kutusu içindeki nesneleri ekran konumuna göre, yukarıdan aşağıya ve soldan sağa sıralayın.
  • 🕒 Oluşturulma Zamanı: Yalnızca Tarayıcı nesneleri için geçerlidir ve her tarayıcı örneğinin açılma sırasını kaydeder.
  • 🗂️ Nesne Tanımlama: Her test nesnesi sınıfı için varsayılan sıra numarası türü, Araçlar > Nesne Tanımlama altında düzenlenebilir.
  • ⌨️ DescriptCanlı programlama: Nesne açıklama dizesinin içine dizin, konum veya oluşturma zamanını sıradan bir özellik olarak iletin.
  • ⚠️ kırılganlık: Sayfa düzeni değiştiğinde sıra değerleri de değişir, bu nedenle bunları geçici bir çözüm olarak düşünün, asla bir tasarım tercihi olarak değil.

Sıralı Tanımlayıcı QTP/UFT Index, Location ve CreationTime ile açıklanmıştır.

Sıralı tanımlayıcı nedir? QTP/UFT?

An Sıra Tanımlayıcı sayısal bir özelliktir UFT (eski QTPBu araç, kayıt oturumu sırasında yakalanan zorunlu ve yardımcı özelliklerin nesneyi benzersiz bir şekilde tanımlamak için yeterli olmadığı durumlarda nesne açıklamasına ekleme yapar. Başarısız olmak yerine, araç esasen "bu sınıftaki üçüncü nesneyi al" diyen bir sayaca geri döner.

Varsayılan olarak, her test nesnesi sınıfı için bir sıra numarası tanımlayıcı türü bulunur. Bir WebEdit, bir WinButton'dan farklı şekilde numaralandırılır ve bir Browser da yine farklı şekilde numaralandırılır. Bir sınıfın varsayılan sıra numarası tanımlayıcısını Nesne Tanımlama penceresinde görüntüleyebilir veya değiştirebilirsiniz.

Sıralı Tanımlayıcı ayarı QTP/UFT Nesne Tanımlama penceresi

Yukarıdaki ekran görüntüsünde de görüldüğü gibi, Sıra numarası tanımlayıcı açılır menüsü, Nesne Tanımlama iletişim kutusunun en altında, zorunlu ve yardımcı özellik listelerinin altında yer almaktadır. Bu konum tesadüfi değildir: zorunlu ve yardımcı özellik listelerinin altında yer alan özelliklerin sırasını yansıtır. UFT Aslında üç gruba da danışıyor.

Sıralı tanımlayıcıların üç türü vardır. UFT:

  1. Dizin tabanlı
  2. Konum tabanlı
  3. Oluşturma Zamanı

Neden Şimdi UFT Sıralı tanımlayıcıları yalnızca son çare olarak kullanır.

Nesne tanımlama UFT Bir basamaklı işlem şeklinde çalışır. Önce zorunlu özellikler öğrenilir. Eğer tek bir eşleşme sağlamazlarsa, açıklama benzersiz olana kadar yardımcı özellikler tek tek eklenir. Her iki grup da tükendiğinde ancak o zaman işlem tamamlanır. UFT Sıralı bir tanımlayıcı eklenir ve çalışma zamanında, sıralı değere güvenilmeden önce Akıllı Tanımlama mekanizmasına başvurulur.

Bu sıralamanın nedeni istikrardır. Zorunlu ve yardımcı özellikler şunları tanımlar: ne Bir nesne şunlardan oluşur: adı, HTML etiketi, türü, etiketi. Sıralı bir tanımlayıcı ise yalnızca onu tanımlar. nerede Nesne, kayıt anında tesadüfen orada bulunuyordu. Sayfayı değiştiren her şey sayıyı da değiştirir:

  • Geliştirici, otomatikleştirdiğiniz alanın üstüne gizli bir alan ekler.
  • Tanıtım afişi, başlığa iki ek bağlantı ekler.
  • Duyarlı bir düzen, formu iki sütundan tek sütuna yeniden düzenler.
  • Kaydedilen çalışma sırasında olduğundan daha erken bir aşamada açılır bir tarayıcı penceresi açılıyor.

Bu değişikliklerin hiçbiri bir isim veya kimlik üzerine kurulu bir açıklamayı bozmaz, ancak her biri sayfadaki her dizin ve konum değerini sessizce değiştirir. Bu nedenle deneyimli mühendisler, sıralı bir tanımlayıcıyı nesne açıklamasının üzerinde çalışılması gerektiğinin bir işareti olarak görürler, tamamlanmış bir çözüm olarak değil. Aynı prensip her yerde geçerlidir. otomasyon testi Genel olarak çerçeveler, konum belirleme stratejisi de dahil olmak üzere Selenium.

💡 İpucu: Sıralı bir tanımlayıcıyı kabul etmeden önce, nesneyi Nesne Casusu'nda açın ve kararlı bir özel öznitelik arayın. Bu özniteliği sınıfın yardımcı özellik listesine eklemek, genellikle bu türdeki her gelecekteki nesne için sıralı bir tanımlayıcıya olan ihtiyacı ortadan kaldırır.

Sıralı Tanımlayıcı Türleri UFT/QTP

Dizin Tabanlı

  • İndeks tabanlı sıralı tanımlayıcı kullanıldığında, UFT bir değer atar indeks Kayıt sırasında nesnenin özelliği.
  • Değer, nesnenin ekranda değil, kaynak kod içinde görünme sırasına göre belirlenir.
  • İlk oluşumun değeri 0'dır.
  • İndeks özelliği değerleri nesneye özgüdür, bu nedenle her test nesne sınıfı ayrı ayrı sayılır.
  • Dolayısıyla, bir WebEdit test nesnesini tanımlamak için index:=3 kullanırsanız, UFT Sayfadaki dördüncü WebEdit nesnesini arar.
  • Benzer şekilde, bir WebButton test nesnesini tanımlamak için index:=1 kullanırsanız, UFT Sayfadaki ikinci WebButton nesnesini arar.

Konum tabanlı

  • Konum tabanlı sıralı tanımlayıcı kullanıldığında, UFT bir değer atar yer Nesneyi benzersiz bir şekilde tanımlamak için kullanılan özellik.
  • Değer, nesnenin pencere, çerçeve veya iletişim kutusu içinde, aynı özelliklere sahip diğer nesnelere göre göründüğü sıraya dayanır.
  • Nesnenin ilk oluşumu 0'dır.
  • Değerler sütunlar halinde, yukarıdan aşağıya ve ardından soldan sağa doğru atanır.
  • Konum, çoğu Standart için varsayılan sıra numarası tanımlayıcısıdır. Windows Görsel düzenin işaretleme sırasından daha istikrarlı olduğu test nesnesi sınıfları.

Oluşturma Zamanı

  • Oluşturma zamanı sıra numarası tanımlayıcısı kullanıldığında, UFT bir değer atar yaratım zamanı Bir tarayıcı nesnesinin özelliği.
  • Bu tanımlayıcı yalnızca Web ortamı ve yalnızca Tarayıcı test nesneleri için geçerlidir.
  • Bu değer, tarayıcının diğer açık tarayıcılara göre açılma sırasını gösterir.
  • Çalıştırma sırasında açılan ilk tarayıcı creationtime:=0 değerini alır ve sonraki tarayıcılar 1, 2, 3 ve bu şekilde devam eder.
  • Bir tarayıcı kapatıldığında, kalan tarayıcılar yeniden numaralandırılmak yerine orijinal değerlerini korur.

İndeks, Konum ve Oluşturma Zamanı Karşılaştırma Tablosu

Üç tanımlayıcı üç farklı soruyu yanıtlıyor ve yanlış olanı seçmek, aralıklı arızaların sık görülen bir nedenidir.

Görünüş indeks Konum Oluşturma Zamanı
Mülkiyet adı indeks yer yaratım zamanı
Sipariş esasları Kaynak kod/nesne hiyerarşisindeki sıralama Ekranın pencere, çerçeve veya iletişim kutusu içindeki konumu Tarayıcı örneklerinin açılma sırası
Sayma kuralı Sıralı, test nesnesi sınıfına göre Sütunlar, yukarıdan aşağıya sonra soldan sağa Sıralı, tarayıcı örneği başına
İlk değer 0 0 0
Uygulanır Web ve Windows sınıflar Esas olarak Standart Windows sınıflar Yalnızca tarayıcı nesneleri
Molalar meydana geldiğinde Fiyatlandırma sırası değişiklikleri Yerleşim yeniden konumlandırıldı veya yeniden boyutlandırıldı. Windows farklı bir sırayla açın
En iyi kullanım için Tekrarlayan ızgara veya tablo kontrolleri Sabit düzenli eski masaüstü formları Ödeme açılır pencereleri gibi çoklu pencereli web akışları

Nesne Deposunda Sıralı Tanımlayıcı Nasıl Ayarlanır?

Sıra numarası tanımlayıcısı, her test nesnesi sınıfı için yapılandırılır ve bu sınıfa ait her nesneye otomatik olarak uygulanır. UFT Sonradan öğrenir. Depoda zaten mevcut olan nesneler geriye dönük olarak güncellenmez.

  1. Açılış UFT seçin Araçlar > Nesne Tanımlama.
  2. Ortamı seçin, örneğin Web veya Standart WindowsOrtam açılır menüsünden.
  3. Değiştirmek istediğiniz test nesnesi sınıfını seçin, örneğin WebEdit veya WinButton.
  4. içinde Sıra numarası tanımlayıcısı Bu bölümden Dizin, Konum, Oluşturma Zamanı veya Hiçbiri'ni seçin.
  5. Tıkla OK ve nesneyi yeniden öğrenerek yeni sıralı değeri yakalayın.
  6. Nesne deposunu açın, nesneyi seçin ve sıralı özelliğin artık açıklama listesinde göründüğünü doğrulayın.

Seçilmesi Hayır Bu sınıf için yedekleme özelliğini tamamen devre dışı bırakır. UFT Bu durumda, tahmin etmek yerine bir tanımlama hatası verecektir; bu da genellikle sessiz yanlış tanımlamanın temiz bir başarısızlıktan daha zararlı olduğu bir test paketinde istediğiniz davranıştır. Beklentilerinizi iyi yazılmış bir şekilde kaydetmek önemlidir. test durumu Bu durum, söz konusu ödünleşmeyi tüm ekip için açık bir şekilde ortaya koyuyor.

⚠️Uyarı: Bir sınıfın sıralı tanımlayıcısını değiştirmek, test düzeyinde değil, makine düzeyinde bir ayardır. Eğer bu değer dışa aktarılıp paylaşılmazsa, sizin makinenizde başarılı olan komut dosyaları bir meslektaşınızın makinesinde veya derleme aracısında başarısız olabilir.

Sıralı Tanımlayıcılar Nasıl Kullanılır? DescriptCanlı Programlama

Tanımlayıcı programlamada Nesne Tanımlama iletişim kutusu yoktur. Sıra numarası, diğer özellik adları gibi doğrudan açıklama dizesine yazılır ve her zaman sıfır tabanlıdır.

' 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

Çıktı:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

Daha güvenli bir yöntem, gerçek özellikleri birleştirmektir. ChildObjects Dolayısıyla, sıra numarası kullanılmadan önce doğrulanır. Aşağıdaki örnek, beş eşleşen WebEdit nesnesi ve 9 indeksi içeren bir sayfayı varsaymaktadır.

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

Çıktı:

Index 9 is out of range; only 5 objects match

Bu koruma mekanizması, işe yaramayan "Nesne tanımlanamıyor" çalışma zamanı hatasını okunabilir bir mesaja dönüştürüyor; bu da sonuçlar bir hata raporuna yayınlandığında önem taşıyor. tracker veya -e HP ALM ile entegre UFT.

Sıralı Tanımlayıcılar Kullanılırken Yapılan Yaygın Hatalar

Sıralama ile ilgili kusurların çoğu tracTekrarlayan hataların küçük bir kümesine geri dönelim.

  • 1'den başlayarak sayıyoruz. Her sıralı tanımlayıcı 0'dan başlar. İlk alan için index:=1 yazmak en sık yapılan hatadır ve zamanlama sorunu gibi görünen bir eksik değer hatasına neden olur.
  • İndeks ile konumu karıştırmak. Index, kaynak kodunu takip eder; location ise ekranı takip eder. CSS'nin öğeleri yeniden sıraladığı bir sayfada, bu iki değer farklıdır ve yer değiştirir.ping Onlar sessizce yanlış kontrolü hedef alıyorlar.
  • CreationTime'ı web ortamı dışında kullanma. Bu özellik yalnızca Browser nesnelerinde bulunur. Bunu Page, Frame veya Window nesnelerine uygulamak, desteklenmeyen özellik hatası verir.
  • Paylaşılan bir fonksiyona sıralı bir sayıyı doğrudan kodlamak. Index:=2 varsayımına dayanan yeniden kullanılabilir bir fonksiyon, farklı bir düzenlemeye sahip ikinci bir ekran tarafından çağrıldığı anda kullanılamaz hale gelir.
  • Uygulama istikrara kavuştuktan sonra sıralı sayıları depoda bırakmak. Geliştiriciler kalıcı kimlikler ekledikten sonra, nesneleri tekrar ziyaret edin ve sıra numarasını yeni özellikle değiştirin.
  • Izgaralar üzerindeki döngüler içindeki sıralı sayılara güvenmek. tercih ederim ChildObjectsBu, canlı bir koleksiyon döndürdüğü için sayım, kaydedilen sayfayı değil, mevcut sayfayı yansıtır.

Kaynaklar

Yukarıdaki eğitimde kullanılan web sayfalarını kendi kendinize pratik yapmak için indirin.

Sıralı tanımlayıcılar, nesne tanımlama modelinin küçük bir parçasıdır. Bunların daha geniş iş akışına nasıl uyduğunu görmek için, tam sürüme devam edin. QTP/UFT eğitim serisiTemelleri gözden geçirin yazılım testiSonuçların nasıl yönetildiğini öğrenin. HP ALM eğitim videosuve konum belirleme stratejilerini şunlarla karşılaştırın: Selenium öğretici.

SSS

Varsayılan değer sınıfa göre değişir. WebEdit ve WebButton gibi çoğu Web test nesnesi varsayılan olarak Index'i, Browser nesneleri CreationTime'ı ve Standard'ı varsayılan olarak ayarlar. Windows Sınıfların varsayılan ayarı Konum'dur. Her varsayılan ayar, Nesne Tanımlama penceresinde görülebilir ve düzenlenebilir.

Önce akıllı kimlik doğrulama işlemi çalışır. UFT Önce öğrenilen açıklamayı dener, ardından sınıf için etkinleştirilmişse Akıllı Tanımlama'yı kullanır ve yalnızca her ikisi de tek bir eşleşen nesne üretemediğinde sıralı tanımlayıcıya geri döner.

Evet. Nesne Tanımlama penceresindeki sınıf için Sıra numarası tanımlayıcı açılır menüsünü Yok olarak ayarlayın. UFT Bu durumda, tahmin etmek yerine bir tanımlama hatası bildirir; bu da yanlış nesneye tıklamanın test verilerini bozabileceği test ortamları için daha güvenlidir.

Biraz. UFT İstenen konuma kadar sayım yapabilmesi için sınıfın her nesnesini tek tek listelemek gerekir; bu nedenle yüzlerce benzer denetim içeren sayfaların çözümlenmesi, benzersiz bir ad veya kimlik üzerine kurulu bir açıklamaya göre daha uzun sürer.

Evet. Mevcut durumda yapay zeka tabanlı tanımlama. UFT Bu yöntem, işaretleme konumuna değil, görsel görünüme ve etiket metnine göre eşleşme kontrollerini serbest bırakır; böylece, çevredeki indeks değerleri değişse bile bir alan, görünümüne göre bulunabilir.

Bir yapay zekâ asistanı, bir depo dışa aktarımını tarayabilir, dizin, konum veya oluşturma zamanı içeren her açıklamayı işaretleyebilir ve yakalanan HTML özniteliklerinden değiştirme önerileri sunabilir. Ancak, her öneriyi uygulamaya geçirmeden önce bir insan tarafından canlı uygulama ile doğrulanması gerekir.

Tıkla okuyun videoya erişilemiyorsa

Bu yazıyı şu şekilde özetleyin: