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.

  • ๐Ÿ”˜ Pemeriksaan elemen: verifyElementPresent mengembalikan TRUE ketika locator cocok dengan sesuatu di halaman, dan verifyElementNotPresent adalah kebalikannya.
  • โ˜‘๏ธ Pemeriksaan teks: verifyTextPresent mencari di seluruh halaman dan peka terhadap huruf besar dan kecil, jadi โ€œAtlantaโ€ tidak akan pernah cocok dengan โ€œatlantaโ€.
  • โœ… Pemeriksaan posisi: verifyElementPositionLeft dan verifyElementPositionTop membandingkan offset piksel suatu elemen dari tepi halaman.
  • ๐Ÿงช Pemuatan halaman: Perintah andWait seperti clickAndWait menghentikan sementara skrip hingga halaman baru selesai dimuat.
  • ๏ธ Konten dinamis: Perintah waitFor menunggu suatu kondisi terpenuhi, bukan menunggu halaman dimuat, yang cocok untuk layar AJAX yang tidak pernah memuat ulang.
  • ๐Ÿ“Š IDE saat ini: Ekstensi browser mengubah nama langkah-langkah ini dan memberikan setiap perintah tunggu batas waktu milidetiknya sendiri.

Verifikasi keberadaan elemen dan perintah waitFor di Selenium IDE

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.

Selenium Skrip IDE menggunakan verifyElementPresent pada kotak userName dan verifyElementNotPresent pada kotak First Name.

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.

Selenium Log IDE menunjukkan verifyTextPresent berhasil untuk rute Atlanta ke Las Vegas dan gagal untuk rute Atlanta ke Las Vegas.

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.

Selenium Langkah-langkah IDE menggunakan verifyElementPositionLeft dan verifyElementPositionTop dengan nilai piksel di kolom Value.

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.

Langkah clickAndWait yang direkam menahan Selenium Skrip IDE hingga halaman berikutnya selesai dimuat.

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.

Formulir pendaftaran Facebook yang menampilkan tautan "Mengapa saya perlu memberikan tanggal lahir saya?" sebelum diklik.

Kita dapat menggunakan kombinasi โ€œklikโ€ dan โ€œwaitForTextPresentโ€ untuk memverifikasi keberadaan teks โ€œMemberikan ulang tahun Anda.โ€

Selenium Langkah-langkah IDE yang dipasangkan dengan klik waitForTextPresent untuk menunggu teks "Memberikan tanggal lahir 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.

Pertanyaan Umum Demo Slot

IDE lama menggunakan satu batas waktu global yang sama di setiap langkah waitFor, yang diubah dengan perintah setTimeout. Ekstensi saat ini menggunakan waktu tunggu eksplisit dalam milidetik pada setiap perintah wait, sehingga satu layar yang lambat tidak lagi memaksa setiap langkah lain untuk menunggu selama itu.

Tidak. Fungsi Pause selalu menunda eksekusi selama durasi penuh, sehingga membuang waktu saat halaman sedang dimuat dengan cepat dan tetap gagal saat halaman sedang dimuat dengan lambat. Gunakan fungsi ini hanya untuk mendemonstrasikan suatu langkah selama demo, jangan pernah dalam rangkaian yang akan Anda jalankan berulang kali.

Tidak. Presence berarti node tersebut ada di DOM, yang tetap berlaku untuk elemen yang disembunyikan oleh CSS atau diposisikan di luar layar. Ketika pengujian bergantung pada pengguna yang melihat sesuatu, tambahkan wait for element visible di samping pemeriksaan presence.

Ya, dan IDE saat ini mewajibkannya. Perintah verifikasi teksnya menerima penunjuk elemen ditambah string yang diharapkan, yang lebih ketat daripada pencarian di seluruh halaman yang lama dan mencegah item menu yang tidak terkait memenuhi pemeriksaan yang memang tidak pernah dimaksudkan untuk dipenuhinya.

Code Perintah `export` mengubah setiap perintah menjadi pernyataan yang setara dalam bahasa target, sehingga langkah tunggu menjadi penantian WebDriver yang eksplisit. Bacalah file yang dihasilkan sebelum mempercayainya, karena batas waktu dan perilaku kegagalan lunak versus keras tidak selalu tetap utuh setelah proses penerjemahan.

Model pembelajaran mesin membaca data eksekusi historis dan menandai langkah-langkah yang gagal secara berkala, bukan secara konsisten, yang merupakan ciri khas dari hilangnya waktu tunggu. Perbaikan pencari lokasi yang dibantu AI mengatasi penyebab umum lainnya dengan mengusulkan pemilih baru ketika terjadi perubahan markup.

Ini menangani bagian mekanisnya dengan baik โ€” mengubah langkah tunggu menjadi WebDriverWait dengan kondisi yang diharapkan. RevPerhatikan waktu tunggu yang dipilih dan kondisi yang ditetapkan, karena kondisi kehadiran yang dihasilkan seringkali perlu diubah menjadi kondisi visibilitas.

Lokator dievaluasi terhadap dokumen yang saat ini dipilih, dan iframe adalah dokumen yang terpisah. Jalankan perintah pilih frame terlebih dahulu, kemudian periksa, dan kembali ke dokumen utama setelahnya agar langkah-langkah selanjutnya tidak dicari dalam konteks yang salah.

Ringkaslah postingan ini dengan: