DescriptPemrograman langsung di QTP/UFT: Dinamis & Statis
โก Ringkasan Cerdas
Descriptpemrograman aktif memungkinkan QTP or UFT Satu pernyataan memuat deskripsi objek itu sendiri, sebagai pasangan nilai properti atau sebagai Descriptobjek ion, sehingga suatu langkah dijalankan meskipun objek tersebut tidak pernah disimpan di Object Repository.
Apa itu Descriptsaya Pemrograman?
Descriptsaya pemrograman digunakan untuk mengeksekusi operasi pada Objek di AUT yang definisinya tidak tersimpan di Tempat Penyimpanan ObjekDengan menggunakan mekanisme ini, Anda dapat melewati proses identifikasi dari Object Repository dan langsung memasukkan Objek tersebut. Description dalam pernyataan itu sendiri.
Nama objek hanya digunakan untuk memetakan objek dalam skrip dengan deskripsinya di repositori objek. Ini berarti bahwa jika Anda mengubah nama objek baik di skrip maupun di repositori objek, skrip tersebut seharusnya tetap berjalan. Tonton video berikut untuk memahami konsep ini.
Klik di sini jika video tidak dapat diakses
Highlights Video
- Hapus Objek DescriptSkrip ini mengambil nama agen dari kotak WinEdit di Object Repository. Jika Anda menjalankan pengujian lagi, pengujian akan gagal karena tidak dapat mengenali objek tersebut. Mari kita periksa alasan mengapa skrip ini gagal.
- Selama Waktu Berjalan, UFT Salah satunya mengidentifikasi operasi yang dilakukan pada kotak WinEdit, dan Objek tersebut. DescriptIon dalam Object Repository disimpan sebagai Agent Name. Nama ini digunakan untuk track objek di dalam repositori objek. Untuk objek induk, Anda tidak dapat memiliki dua objek anak dengan nama yang sama, jadi QTP Secara unik memetakan objek dalam repositori. Kemudian menggunakan deskripsi yang tersimpan dalam Repositori Objek, mengganti nama dengan deskripsi, dan menggunakan pernyataan yang dihasilkan untuk mengidentifikasi objek dalam aplikasi yang sedang diuji.
- Karena dalam kasus kami, kami telah menghapus deskripsi objek ini sepenuhnya, skrip tersebut gagal.
- Namun bagaimana jika, alih-alih QTP Dengan mengganti deskripsi objek, Anda sebagai penguji langsung menentukan deskripsi objek dalam skrip Anda? Ini tidak lain adalah โDescriptPemrograman iveโ
Perubahan tanggung jawab tunggal itulah yang diimplementasikan oleh kedua formulir di bawah ini, dan setiap formulir cocok untuk jenis skrip yang berbeda.
Jenis dari DescriptPemrograman ive
Anda dapat menggunakan DescriptSaya pemrograman dalam dua cara
- Statis
- Dinamis
Statis DescriptPemrograman ive
Dalam Metode Statis, untuk identifikasi objek, Anda menentukan properti objek dalam format berikut
property:=values,
Format ini disebut pasangan nilai properti dan diapit oleh tanda kutip. Jika ditulis lengkap, pernyataan statis terlihat seperti ini:
TestObject("PropertyName1:=PropertyValue1", "PropertyName2:=PropertyValue2").Method
Jika objek Anda menggunakan beberapa deskripsi untuk identifikasi, Anda dapat menentukannya menggunakan koma.
Jadi dalam kasus kami, deskripsi Nama Agen menjadi
"nativeclass:=Edit", "attached text:=Agent Name:"
Deskripsi statis dibaca pada saat pernyataan dijalankan, sehingga ideal untuk langkah-langkah sekali jalan dan untuk perbaikan cepat pada skrip yang tidak ingin Anda rekam ulang.
Dinamis DescriptPemrograman ive
Metode kedua untuk melakukan tindakan yang sama adalah menggunakan Dinamis Descriptsaya pemrograman
Jika skrip Anda menggunakan kandidat objek pemrograman deskriptif beberapa kali, akan sangat melelahkan untuk menentukan semua pasangan nilai properti untuk setiap pernyataan
Dalam kasus seperti itu, Anda dapat memanfaatkan DescriptKelas ion disediakan oleh QTP
Sintaks untuk membuat objek deskripsi adalah
Set MyDescription = Description.Create() MyDescription("property").Value = "property-value"
Ini adalah Metode Dinamis
Dengan mengisi objek tersebut dengan properti Nama Agen yang digunakan di atas, akan diperoleh deskripsi yang lengkap dan dapat digunakan kembali:
Dim oDesc Set oDesc = Description.Create() oDesc("nativeclass").Value = "Edit" oDesc("attached text").Value = "Agent Name:"
Variabel oDeskripsi Sekarang objek tersebut dapat diteruskan ke pernyataan mana pun yang membutuhkannya, sehingga satu pengeditan akan memperbarui setiap langkah yang menggunakannya.
Statis vs Dinamis DescriptPemrograman Interaktif: Kapan Menggunakan Masing-masing
Kedua bentuk tersebut menghasilkan deskripsi runtime yang sama, jadi pilihannya lebih berkaitan dengan pemeliharaan daripada kemampuan.
| Kriteria | Statis (sebaris) | Dinamis (Descriptobjek ion) |
|---|---|---|
| Bagaimana deskripsi tersebut ditulis | Pasangan nilai properti yang diketik di dalam panggilan objek pengujian | Properti yang ditambahkan ke objek yang dibuat dengan Description.Create() |
| Reuse | Diulang di setiap pernyataan yang membutuhkan objek tersebut. | Disimpan dalam satu variabel dan diteruskan ke mana pun dibutuhkan. |
| minat | Pernyataan singkat tetap mudah dibaca; pernyataan panjang menjadi sulit dipahami. | Terdapat baris pengaturan tambahan, tetapi pernyataan itu sendiri tetap singkat. |
| Perubahan saat runtime | Nilai bersifat tetap kecuali jika digabungkan dari variabel. | Nilai properti dapat ditetapkan ulang sebelum setiap penggunaan. |
| Berfungsi dengan ChildObjects | Tidak, argumen filter harus berupa Descriptobjek ion | Ya, ini formulir yang dibutuhkan. |
| Paling cocok untuk | Satu atau dua langkah pada objek yang tidak ada di repositori. | Objek yang digunakan berulang kali, atau koleksi yang diambil saat runtime. |
Mengapa Menggunakan Descriptsaya Pemrograman?
Transkrip di bawah ini menyertai video panduan skenario nyata di mana jumlah objek tidak dapat diketahui sebelumnya.
Transkrip Video
- Pertanyaan bernilai jutaan dolar adalah mengapa menggunakan DP ketika proses Identifikasi Objek ditangani oleh QTP
- Misalkan Anda ditugaskan untuk menguji portal lowongan kerja. Anda memasukkan kueri pencarian ke dalam portal, dan pengujian mengharuskan Anda untuk memilih semua lowongan kerja yang tersedia dan mengklik Lamar Pekerjaan.
- Namun, jumlah pekerjaan yang ditampilkan akan bergantung pada kueri pencarian dan pekerjaan yang tersedia pada saat eksekusi skrip, dan tidak ada cara untuk memprediksi sebelumnya jumlah pekerjaan yang akan ditampilkan.
- Dalam kasus seperti ini, Anda dapat menggunakan pemrograman deskriptif. Meskipun Anda tidak mengetahui jumlah dan nama kotak centang, Anda mengetahui kelas untuk objek tersebut sebagai "WebCheck".Box"
- Anda dapat menggunakan Metode ChildObjects untuk mengembalikan objek milik orang tua tertentu
- Sebaris kode seperti โ
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
akan mengembalikan semua objek anak untuk halaman ini.
- Tapi kami hanya menginginkan WebCheckBox objek. Untuk melakukan itu, kita dapat membuat objek filter dan mengatur propertinya ke kelas kotak centang web, kemudian meneruskan filter ini sebagai argumen ke metode ChildObjects.
- Dalam kasus ini, hanya kotak centang yang dikembalikan.
- Selanjutnya, Anda dapat menulis kode seperti ini, yang mengakses seluruh koleksi kotak centang mulai dari nol dan mengatur semua kotak centang menjadi AKTIF.
- Selanjutnya, Anda dapat mengklik tombol terapkan untuk menyelesaikan tes
- Anda juga dapat menggunakan DescriptPemrograman ive untuk menjalankan objek yang sulit direkam seperti Panel Sembunyikan Otomatis, Objek dengan hierarki yang berubah, Objek Dalam Bersarang, Sub-menu.
- Anda juga dapat melakukan manipulasi string tingkat lanjut menggunakan pemrograman deskriptif
- Jika dikombinasikan dengan properti indeks, pemrograman deskriptif dapat sangat berguna dalam mengidentifikasi objek-objek yang sulit.
- Jika Anda menggunakan deskripsi terprogram untuk suatu objek dalam hierarki objek, Anda perlu menggunakan pemrograman deskriptif untuk objek anak berikutnya.
- Sebagai contoh, jika pemrograman deskriptif digunakan untuk objek Page tetapi objek WinEdit anak berikutnya berasal dari Object Repository, maka pernyataan tersebut salah.
- Sebaliknya, ketika pemrograman deskriptif digunakan untuk objek Page dan WinEdit, pernyataan tersebut benar.
Jika dituliskan, filter dan perulangan yang dijelaskan dalam transkrip terlihat seperti ini:
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
Koleksi ini berbasis nol, itulah sebabnya perulangan berhenti di Hitungan โ 1Karena filter dievaluasi saat baris kode dijalankan, kode yang sama akan berfungsi baik jika pencarian menghasilkan tiga pekerjaan atau tiga puluh pekerjaan.
Ekspresi Reguler, Pengidentifikasi Ordinal, dan Kesalahan Umum
DescriptPemrograman interaktif berperilaku dalam dua cara yang mengejutkan kebanyakan orang untuk pertama kalinya ketika sebuah pernyataan gagal tanpa alasan yang jelas.
1) Setiap nilai properti diperlakukan sebagai ekspresi reguler. Keterangan seperti Jumlah (USD) Oleh karena itu, tidak cocok karena tanda kurung tersebut merupakan sintaks ekspresi reguler. Gunakan garis miring terbalik untuk menghindari tanda kurung tersebut, atau matikan evaluasi ekspresi reguler untuk properti tersebut pada Descriptobjek ion:
Set oDesc = Description.Create() oDesc("name").Value = "Total (USD)" oDesc("name").RegularExpression = False
2) Pengidentifikasi ordinal digunakan untuk memecahkan kebuntuan. Jika deskripsi masih cocok dengan lebih dari satu objek, tambahkan indeks, tempat or waktu pembuatan sebagai properti tambahan. Penghitungan indeks dimulai dari nol:
WebEdit("name:=userName", "html tag:=INPUT", "index:=0").Set "guru99" WebEdit("name:=userName", "html tag:=INPUT", "index:=1").Set "guru99"
Tiga jebakan lain yang perlu diperiksa sebelum Anda mulai men-debug aplikasi adalah:
- penggunaan kelas mikrofon, bukan labelnya Nama kelas Ditampilkan di Object Spy. Nama tampilan bukanlah properti yang valid dalam deskripsi.
- Nama properti tidak peka terhadap huruf besar/kecil tetapi harus dieja persis seperti yang dilaporkan oleh teknologi, termasuk spasi di dalamnya. teks terlampir ke tag html.
- DescriptPemrograman langsung melewati repositori; hal ini tidak meningkatkan pengenalan objek. Jika add-in yang benar tidak dimuat, tidak ada deskripsi yang akan membuat objek tersebut dapat dikenali.
