Verifikasi Elemen Ada & tunggu Perintah masuk Selenium
โก Ringkasan Cerdas
Verifikasi keberadaan elemen dan perintah waitFor di Selenium IDE (Integrated Development Environment) memastikan bahwa halaman berisi elemen dan teks yang diharapkan oleh pengujian, dan menghentikan pemutaran sementara hingga kondisi dinamis terpenuhi sebelum langkah berikutnya dijalankan.
Sebuah rekaman Selenium IDE Skrip mengklik dan mengetik, tetapi dengan sendirinya ia tidak pernah memutuskan apakah aplikasi berperilaku dengan benar. Dua kelompok perintah melakukan pekerjaan itu: memeriksa perintah, yang memeriksa status halaman, dan menunggu perintah yang menunda eksekusi hingga halaman siap diperiksa.
โ ๏ธ Catatan tentang versi: Tangkapan layar di bawah ini berasal dari sumber aslinya. Firefox-plugin Selenium IDE tersebut sudah tidak lagi didistribusikan, dan mereka menggunakan nama Selenese dengan format camelCase. IDE saat ini adalah Chrome, Firefox dan Tepi ekstensi browserPerilaku yang dijelaskan di sini masih berlaku, tetapi beberapa nama perintah telah berubah โ sebuah petaping Tabel tersebut akan ditampilkan di bagian selanjutnya artikel ini, dan setiap perintah serta tangkapan layar asli akan dipertahankan persis seperti yang dipublikasikan.
Verifikasi Kehadiran Elemen
Kita dapat menggunakan dua perintah berikut untuk memverifikasi keberadaan suatu elemen:
- verifikasiElementPresent โ mengembalikan TRUE jika elemen yang ditentukan DITEMUKAN di halaman; FALSE jika sebaliknya
- verifikasiElementNotPresent โ mengembalikan BENAR jika elemen yang ditentukan TIDAK DITEMUKAN di mana pun di halaman; SALAH jika ada.
Kedua perintah tersebut memerlukan sebuah elemen. locator dalam Target field โ sebuah id, sebuah nama, sebuah pemilih CSS, sebuah teks tautan atau sebuah XPath ekspresi โ dan keduanya tidak memerlukan nilai.
Skrip pengujian di bawah ini memverifikasi bahwa kotak teks UserName ada di dalam Mercury Halaman beranda tur sementara kotak teks Nama Depan tidak ada. Kotak teks Nama Depan sebenarnya adalah elemen yang ada di halaman Pendaftaran Mercury Tur, bukan di beranda.
Karena ini memeriksa perintah daripada menegaskan Jika terjadi kegagalan pada perintah, maka kegagalan tersebut akan dicatat dalam log dan langkah-langkah selanjutnya tetap dijalankan. Perbedaan ini akan dibahas secara detail lebih lanjut di bawah.
Verifikasi Kehadiran Teks Tertentu dalam Perintah di Selenium
Memeriksa apakah suatu elemen ada saja tidak selalu cukup โ sebuah pengujian sering kali perlu mengkonfirmasi kata-kata yang ditampilkan kepada pengguna. Dua perintah teks dapat mengatasi hal tersebut.
- verifikasiTeksPresent โ mengembalikan TRUE jika string teks yang ditentukan DITEMUKAN di suatu tempat di halaman; FALSE jika sebaliknya
- verifikasiTeksTidak Hadir โ mengembalikan BENAR jika string teks yang ditentukan TIDAK DITEMUKAN di mana pun di halaman; SALAH jika ditemukan
Ingatlah bahwa perintah ini peka huruf besar-kecil.
Catatan di bawah ini menunjukkan halaman yang sama diperiksa dua kali dengan dua ejaan frasa yang sama.
Dalam skenario di atas, โAtlanta to Las Vegasโ diperlakukan berbeda dari โatlanta to Las Vegasโ karena huruf โAโ pada โAtlantaโ ditulis dengan huruf besar pada yang pertama sedangkan huruf kecil pada yang lainnya. Ketika perintah verifyTextPresent digunakan pada masing-masing teks, satu berhasil sedangkan yang lainnya gagal.
Verifikasi Posisi Tertentu suatu Elemen
Cacat tata letak jarang merusak penunjuk lokasi, sehingga pemeriksaan keberadaan melewatkannya. Perintah posisi menutup celah tersebut.
Selenium IDE menunjukkan posisi suatu elemen dengan mengukur (dalam piksel) seberapa jauh jaraknya dari tepi kiri atau atas jendela browser.
- verifikasiElementPositionLeft โ memverifikasi apakah jumlah piksel yang ditentukan cocok dengan jarak elemen dari tepi kiri halaman. Ini akan mengembalikan FALSE jika nilai yang ditentukan tidak sesuai dengan jarak dari tepi kiri.
- verifikasiElementPositionTop โ memverifikasi apakah jumlah piksel yang ditentukan cocok dengan jarak elemen dari tepi atas halaman. Ini akan mengembalikan FALSE jika nilai yang ditentukan tidak sesuai dengan jarak dari tepi atas.
Skrip di bawah ini mencatat offset piksel yang diharapkan di kolom Nilai.
Gunakan kedua perintah ini dengan hati-hati. Offset piksel berubah tergantung pada ukuran jendela, tingkat zoom, dan font yang terpasang, sehingga angka yang dikodekan secara permanen yang berhasil di satu mesin dapat gagal di mesin lain.
Tunggu Perintah masuk Selenium
Perintah verifikasi hanya dapat memeriksa apa yang sudah ada di layar, jadi pemeriksaan yang berjalan terlalu dini akan gagal meskipun aplikasi sedang berfungsi. Perintah tunggu mengatasi masalah waktu tersebut.
Berikut ini adalah jenis perintah tunggu di Selenium
danTunggu perintah
Ini adalah perintah yang akan menunggu halaman baru dimuat sebelum melanjutkan ke perintah berikutnya.
Contohnya adalah
- klikDanTunggu
- ketikDanTunggu
- pilihDanTunggu
Masing-masing merupakan perintah aksi biasa dengan akhiran AndWait, seperti yang ditunjukkan oleh langkah yang direkam di bawah ini.
tunggu perintah
Ini adalah perintah yang menunggu hingga kondisi tertentu menjadi benar sebelum melanjutkan ke perintah berikutnya (terlepas dari pemuatan halaman baru). Perintah ini lebih tepat digunakan pada situs web dinamis berbasis AJAX yang mengubah nilai dan elemen tanpa memuat ulang seluruh halaman. Contohnya meliputi:
- tungguUntukJudul
- tungguUntukTeksPresent
- tungguUntuk Peringatan
Pertimbangkan skenario Facebook di bawah ini.
Kita dapat menggunakan kombinasi โklikโ dan โwaitForTextPresentโ untuk memverifikasi keberadaan teks โMemberikan ulang tahun Anda.โ
Kami tidak dapat menggunakan clickAndWait karena tidak ada halaman yang dimuat setelah mengklik tautan โMengapa saya harus memberikan tanggal lahir saya?โ tautan. Jika kita melakukannya, pengujian akan gagal
Aturan yang sama berlaku untuk konten apa pun yang disuntikkan oleh skrip, bukan oleh navigasi, itulah sebabnya Layar berbasis AJAX Hampir selalu perlu menggunakan waitFor daripada andWait.
Perintah Assert vs Verify vs waitFor dalam Selenium IDE
Para pemula sering kali memilih keluarga yang salah dan kemudian bertanya-tanya mengapa sebuah rangkaian berhenti pada cacat pertama, atau mengapa rangkaian tersebut melaporkan dua puluh kegagalan yang semuanya trackembali ke satu. Ketiga awalan tersebut menjawab tiga pertanyaan berbeda.
| Awalan | Apa yang dilakukannya | Saat gagal | Paling baik digunakan untuk |
|---|---|---|---|
| menegaskan | Memeriksa kondisi dengan segera | Mencatat kegagalan dan menghentikan kasus uji. | Prasyarat โ proses login yang harus berhasil sebelum hal lain dapat dilakukan. |
| memeriksa | Memeriksa kondisi dengan segera | Mencatat kegagalan dan melanjutkan ke perintah berikutnya. | Pemeriksaan independen, seperti beberapa label pada satu halaman konfirmasi. |
| tunggu | Jajak pendapat dilakukan hingga kondisi tersebut menjadi benar. | Mencatat kegagalan setelah waktu tunggu habis, lalu melanjutkan. | Apa pun yang muncul terlambat โ respons AJAX, indikator pemuatan, dialog. |
Pola praktis menggabungkan ketiganya: pastikan halaman yang Anda tuju, tunggu elemen yang tiba secara asinkron, lalu verifikasi setiap bidang secara individual. Melakukannya dalam urutan tersebut berarti satu navigasi yang rusak akan menghentikan pengujian lebih awal, sementara beberapa ketidaksesuaian kosmetik akan dilaporkan dalam satu kali proses. Disiplin yang sama berlaku untuk Selenium pengujian yang ditulis dalam kode, di mana padanannya adalah penegasan keras (hard assertions), penegasan lunak (soft assertions), dan penantian eksplisit (explicit waits).
Perintah Verifikasi dan Tunggu dalam Keadaan Saat Ini Selenium IDE
The FirefoxPlugin IDE yang menghasilkan tangkapan layar di atas telah dihentikan, dan kumpulan perintah dibangun ulang untuk ekstensi browser saat ini. Beberapa nama Selenese tetap ada, beberapa diganti namanya, dan beberapa dihilangkan. Tabel di bawah ini memetakan perintah yang digunakan dalam artikel ini ke padanannya saat ini, yang diambil dari sumber resmi. Selenium Referensi perintah IDE.
| Perintah Selenese lama | Perintah di IDE saat ini |
|---|---|
| verifikasiElementPresent | verifikasi elemen hadir |
| verifikasiElementNotPresent | verifikasi elemen tidak ada |
| verifikasiTeksPresent | verifikasi teks (dibatasi pada penunjuk elemen, bukan seluruh halaman) |
| verifikasiTeksTidak Hadir | verifikasi bukan teks (terbatas pada penunjuk elemen) |
| verifikasiJudul | verifikasi judul |
| verifikasiPosisiElemenKiri / verifikasiPosisiElemenAtas | Tidak ada padanan โ pernyataan posisi telah dihilangkan. |
| clickAndWait, typeAndWait, selectAndWait | Tidak ada akhiran AndWait โ perintah open sudah menunggu pemuatan halaman. |
| tungguUntukElementPresent | tunggu hingga elemen tersedia, dengan waktu tunggu dalam milidetik |
| tungguUntuk Peringatan | tampilkan peringatan atau verifikasi teks peringatan setelah dialog muncul. |
Dua perbedaan paling penting dalam pekerjaan sehari-hari. Pertama, perintah tunggu saat ini โ tunggu elemen hadir, tunggu elemen terlihat, tunggu elemen dapat diedit, dan kebalikannya โ masing-masing membutuhkan waktu tunggu eksplisit dalam milidetik, sehingga langkah yang lambat tidak lagi harus berbagi satu batas waktu global. Kedua, pencarian teks di seluruh halaman telah dihapus: verifikasi teks membutuhkan lokator, yang biasanya menghasilkan pemeriksaan yang lebih akurat.
Kesalahan Umum pada Perintah Verify dan waitFor
Sebagian besar masalah yang dilaporkan terkait perintah-perintah ini bukanlah cacat pada IDE. Daftar di bawah ini mencakup kegagalan yang paling sering muncul dan solusi untuk masing-masing kegagalan tersebut.
- Elemen tersebut ada, tetapi pengecekan tetap gagal. Kehadiran dan visibilitas adalah keadaan yang berbeda. Sebuah elemen yang disembunyikan di balik aturan CSS masih ada di DOM, jadi gabungkan pengecekan kehadiran dengan menunggu elemen terlihat ketika pengujian bergantung pada pengguna yang benar-benar melihatnya.
- Pemeriksaan teks gagal pada kata-kata yang terlihat identik. Spasi yang tidak terputus, spasi di akhir baris, dan tanda apostrof keriting yang disalin dari dokumen desain semuanya akan merusak kecocokan persis. Ketik ulang string yang diharapkan secara manual daripada menempelkannya.
- Perintah tunggu mengalami batas waktu pada halaman yang jelas-jelas sudah dimuat. Elemen tersebut biasanya berada di dalam iframe. Jalankan `select frame` terlebih dahulu, jika tidak, locator akan dievaluasi terhadap dokumen yang salah.
- clickAndWait mengalami hang pada aplikasi satu halaman. Tidak ada navigasi yang terjadi, jadi tidak ada yang perlu ditunggu. Ganti dengan klik ditambah perintah waitFor yang sesuai.
- Pemeriksaan posisi berhasil secara lokal tetapi gagal di server pembangunan. Ukuran layar dan tampilan font berbeda. Lebih baik gunakan pemeriksaan keberadaan atau teks, atau tetapkan ukuran jendela secara eksplisit di awal pengujian.
- Seluruh rangkaian proses berhenti pada ketidakcocokan pertama. Perintah assert tercatat padahal yang dimaksudkan adalah perintah verify. Ganti awalan (prefix) dan eksekusi akan melaporkan setiap kegagalan, bukan hanya yang pertama.
Setelah naskah berhasil melewati jebakan-jebakan ini, langkah selanjutnya biasanya adalah... menyimpan nilai runtime dalam variabel Jadi, pengecekan tersebut membandingkan dengan data nyata, bukan dengan string yang sudah ditentukan sebelumnya.






