DescriptProgramlama alanında QTP/UFT: Dinamik ve Statik
⚡ Akıllı Özet
DescriptProgramlama, bir QTP or UFT Bir ifade, özellik-değer çiftleri veya bir biçimde nesne tanımının kendisini içerir. DescriptBu nedenle, nesne Nesne Deposunda hiç saklanmamış olsa bile bir adım çalıştırılır.
Nedir? DescriptAktif Programlama?
Descriptprogramlama Bu, tanımı AUT'de saklanmayan bir Nesne üzerinde işlemler yürütmek için kullanılır. Nesne DeposuBu mekanizmayı kullanarak, Nesne Deposundan kimlik doğrulama işlemini atlayabilir ve Nesneyi sağlayabilirsiniz. Descriptifadenin kendisinde iyon.
Bir nesne adı, bir betikteki bir nesneyi nesne deposundaki açıklamasıyla eşleştirmek için kullanılır. Bu, hem betiğinizde hem de nesne deposunda nesne adını değiştirirseniz, betiğin yine de çalışması gerektiği anlamına gelir. Bu kavramla ilgili aşağıdaki videoyu izleyin.
Tıkla okuyun videoya erişilemiyorsa
Video Maç Özetleri
- Nesneyi Sil DescriptNesne deposundaki WinEdit kutusundaki Aracı Adı'nın eklenmesi. Testi tekrar çalıştırırsanız, nesneyi tanıyamadığı için başarısız olacaktır. Komut dosyasının neden başarısız olduğunu inceleyelim.
- Çalışma Süresi Boyunca, UFT WinEdit kutusunda gerçekleştirilen işlem ve Nesne belirlenir. DescriptNesne deposundaki ion, Aracı Adı olarak saklanır. Bu adı şu amaçlarla kullanır: track, nesne deposundaki nesnedir. Bir üst nesne için, aynı ada sahip iki alt nesne olamaz, bu nedenle QTP Bu işlem, depodaki nesneyi benzersiz bir şekilde eşleştirir. Ardından, Nesne Deposunda saklanan açıklamayı kullanır, adı açıklamayla değiştirir ve elde edilen ifadeyi kullanarak test edilen uygulamadaki nesneyi tanımlar.
- Bizim durumumuzda bu nesne açıklamasını tamamen sildiğimiz için komut dosyası başarısız oluyor.
- Peki ya bunun yerine, QTP Nesne açıklamasını değiştirerek, test uzmanı olarak siz doğrudan betiğinizde nesne açıklamalarını mı belirtiyorsunuz? Bu, "DescriptCanlı Programlama”
Aşağıdaki iki form, sorumluluktaki bu tek değişikliği uygulamaya koyar ve her form farklı bir senaryo türüne uygundur.
Tipleri DescriptCanlı Programlama
Sen kullanabilirsiniz Descriptiki şekilde programlama yapıyorum
- Statik
- Hareketlilik
Statik DescriptCanlı Programlama
Statik Yöntemde, nesne tanımlaması için bir nesnenin özelliğini aşağıdaki biçimde belirtirsiniz
property:=values,
Bu format, özellik-değer çifti olarak adlandırılır ve tırnak işaretleri içine alınır. Tam olarak yazıldığında, statik bir ifade şu şekilde görünür:
TestObject("PropertyName1:=PropertyValue1", "PropertyName2:=PropertyValue2").Method
Nesneniz tanımlama için birden fazla açıklama kullanıyorsa, bunları virgül kullanarak belirtebilirsiniz.
Dolayısıyla bizim durumumuzda Temsilci Adının açıklaması şöyle olur:
"nativeclass:=Edit", "attached text:=Agent Name:"
Statik açıklamalar, ifadenin çalıştırıldığı noktada okunur; bu da onları tek seferlik adımlar ve yeniden kaydetmek istemediğiniz bir komut dosyasına hızlı düzeltmeler yapmak için ideal hale getirir.
Hareketlilik DescriptCanlı Programlama
Aynı eylemi yapmanın ikinci yöntemi Dinamik'i kullanmaktır. Descriptprogramlama
Betiğinizin tanımlayıcı programlama nesnesi adayını birden çok kez kullanması durumunda, her ifade için tüm özellik değeri çiftlerini belirtmek çok yorucu olacaktır.
Bu gibi durumlarda şunlardan faydalanabilirsiniz: Description Sınıfı tarafından sağlanmaktadır QTP
Açıklama nesnesi oluşturmak için kullanılan sözdizimi şu şekildedir:
Set MyDescription = Description.Create() MyDescription("property").Value = "property-value"
Bu, Dinamik Yöntemdir.
Yukarıda kullanılan Temsilci Adı özellikleriyle bu nesneyi doldurmak, eksiksiz ve yeniden kullanılabilir bir açıklama sağlar:
Dim oDesc Set oDesc = Description.Create() oDesc("nativeclass").Value = "Edit" oDesc("attached text").Value = "Agent Name:"
Değişken oDesc Artık bu nesneye ihtiyaç duyan herhangi bir ifadeye aktarılabiliyor, böylece tek bir düzenleme onu kullanan her adımı güncelliyor.
Statik ve Dinamik DescriptBeşli Programlama: Her Birini Ne Zaman Kullanmalı?
Her iki yöntem de aynı çalışma zamanı açıklamasını üretir, bu nedenle seçim yetenekten ziyade bakım kolaylığıyla ilgilidir.
| Kriterler | Statik (satır içi) | Dinamik (Descriptiyon nesnesi) |
|---|---|---|
| Açıklamanın nasıl yazıldığı | Test nesnesi çağrısının içine yazılan özellik değeri çiftleri | Oluşturulan bir nesneye eklenen özellikler Description.Create() |
| Yeniden | Nesneye ihtiyaç duyulan her ifadede tekrarlanır. | Tek bir değişkende saklanır ve ihtiyaç duyulan her yere aktarılır. |
| okunabilirlik | Kısa ifadeler okunabilir kalır; uzun ifadeler ise anlaşılması güç hale gelir. | Ek kurulum satırları var, ancak ifadenin kendisi kısa kalıyor. |
| Çalışma zamanı değişiklikleri | Değişkenlerden birleştirilmedikçe değerler sabittir. | Özellik değerleri her kullanımdan önce yeniden atanabilir. |
| Alt nesnelerle çalışır. | Hayır, filtre argümanı bir olmalıdır. Descriptiyon nesnesi | Evet, bu gerekli form. |
| En uygun | Depoda bulunmayan bir nesne üzerinde bir veya iki adım. | Tekrar tekrar kullanılan nesneler veya çalışma zamanında alınan koleksiyonlar |
Neden kullan DescriptAktif Programlama?
Aşağıdaki metin, nesne sayısının önceden bilinemediği gerçek bir senaryonun video anlatımına eşlik etmektedir.
Video Transkripti
- Asıl soru şu: Nesne tanımlama işlemi zaten başka bir yöntemle yapılıyorsa neden DP kullanılmalı? QTP
- Diyelim ki bir iş ilan portalını test etmekle görevlendirildiniz. Portala bir arama sorgusu giriyorsunuz ve testiniz, mevcut tüm iş ilanlarını seçmenizi ve "İşe Başvur" düğmesine tıklamanızı bekliyor.
- Ancak yansıtılacak iş sayısı, arama sorgusuna ve komut dosyasının yürütüldüğü sırada mevcut olan işlere bağlıdır ve yansıtılacak iş sayısını önceden tahmin etmenin bir yolu yoktur.
- Bu gibi durumlarda, tanımlayıcı programlama kullanabilirsiniz. Onay kutularının sayısını ve adlarını bilmeseniz bile, nesnelerin sınıfını "WebCheck" olarak biliyorsunuz.Boxbaşlıklı bir kılavuz yayınladı
- Sen kullanabilirsiniz ChildObjects yöntemi belirli bir ebeveyne ait nesneleri döndürmek için
- Şöyle bir kod satırı –
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
Bu sayfa için tüm alt nesneleri döndürecektir.
- Ancak biz yalnızca WebCheck'i istiyoruzBox Nesneleri filtreleyebiliriz. Bunu yapmak için bir filtre nesnesi oluşturup özelliğini web onay kutusu sınıfına ayarlayabilir ve ardından bu filtreyi ChildObjects yöntemine argüman olarak geçirebiliriz.
- Bu durumda sadece onay kutuları döndürülür.
- Ardından, sıfırdan başlayarak tüm onay kutularına erişen ve tüm onay kutularını AÇIK konuma getiren şu şekilde bir kod yazabilirsiniz.
- Daha sonra testi tamamlamak için uygula düğmesine tıklayabilirsiniz.
- Ayrıca kullanabilirsiniz DescriptOtomatik Gizleme Panelleri, Değişen Hiyerarşili Nesneler, İç İçe Nesneler, Alt Menüler gibi kaydedilmesi zor nesneleri çalıştırmak için programlama.
- Tanımlayıcı programlamayı kullanarak gelişmiş dize işlemlerini de yapabilirsiniz.
- İndeks özelliğiyle birlikte kullanıldığında, tanımlayıcı programlama, zor nesnelerin tanımlanmasında çok faydalı olabilir.
- Nesne hiyerarşisindeki bir nesne için programatik tanımlama kullanıyorsanız, sonraki alt nesneler için de tanımlayıcı programlama kullanmanız gerekecektir.
- Örneğin, Page nesnesi için tanımlayıcı programlama kullanılmışsa ancak onu takip eden alt WinEdit nesnesi Nesne Deposundan geliyorsa, ifade yanlıştır.
- Aksine, hem Page hem de WinEdit nesneleri için tanımlayıcı programlama kullanıldığında, ifade doğrudur.
Yazılı olarak, metinde açıklanan filtre ve döngü şu şekilde görünmektedir:
Dim oFilter, allCheckBoxes, i Set oFilter = Description.Create() oFilter("micclass").Value = "WebCheckBox" Set allCheckBoxes = Browser("Jobs").Page("QTP").ChildObjects(oFilter) For i = 0 To allCheckBoxes.Count - 1 allCheckBoxes(i).Set "ON" Next
Koleksiyon sıfır tabanlıdır, bu yüzden döngü şu noktada durur: Sayı – 1Filtre, satır çalıştırıldığında değerlendirildiği için, arama üç iş sonucu döndürse de otuz iş sonucu döndürse de aynı kod çalışır.
Düzenli İfadeler, Sıralı Tanımlayıcılar ve Yaygın Hatalar
Descriptİnvektif programlama, bir ifadenin görünürde hiçbir sebep olmadan başarısız olması durumunda çoğu insanı şaşırtan iki şekilde davranır.
1) Her özellik değeri normal bir ifade olarak ele alınır. Örneğin şu şekilde bir başlık: Toplam (ABD Doları) Bu nedenle eşleşme sağlanamıyor, çünkü parantezler normal ifade sözdizimidir. Bunları ters eğik çizgiyle kaçış karakteri olarak kullanın veya bu özellik için normal ifade değerlendirmesini devre dışı bırakın. Descriptiyon nesnesi:
Set oDesc = Description.Create() oDesc("name").Value = "Total (USD)" oDesc("name").RegularExpression = False
2) Sıra sayı tanımlayıcıları eşitlik durumlarında kullanılır. Bir açıklama hala birden fazla nesneyle eşleşiyorsa, şunları ekleyin: indeks, yer or yaratım zamanı Ek bir özellik olarak. İndeks sayısı sıfırdan başlar:
WebEdit("name:=userName", "html tag:=INPUT", "index:=0").Set "guru99" WebEdit("name:=userName", "html tag:=INPUT", "index:=1").Set "guru99"
Uygulamada hata ayıklamaya başlamadan önce kontrol etmeniz gereken üç tuzak daha var:
- Kullanım mikrofon sınıfıetiketi değil Sınıf adı Object Spy'da gösteriliyor. Görüntülenen ad, açıklamada geçerli bir özellik değil.
- Özellik adları büyük/küçük harf duyarlı değildir, ancak teknoloji tarafından bildirildiği gibi, aralarındaki boşluk da dahil olmak üzere, aynen yazılmalıdır. ekli metin hem de HTML etiketi.
- DescriptBu tür programlama, depoyu atlar; nesne tanımayı iyileştirmez. Doğru eklenti yüklenmezse, hiçbir açıklama nesneyi tanımlanabilir hale getiremez.
