Penanganan Pengecualian di Selenium Driver web (Jenis)

⚡ Ringkasan Cerdas

Penanganan pengecualian di Selenium WebDriver mencegah perintah yang gagal agar tidak berhenti.ping seluruh rangkaian uji coba. Java try-catch, multiple catch blocks, throw, throws dan akhirnya masing-masing memberikan skrip cara berbeda untuk pulih.

  • 🔘 Definisi: Pengecualian adalah kesalahan yang muncul saat program dieksekusi, dan pengecualian yang tidak ditangani akan menyebabkan program berhenti berjalan.
  • ☑️ Cakupan: Selenium WebDriver menyediakan lebih dari empat puluh kelas pengecualian, dan setiap kelas tersebut merupakan turunan dari WebDriverException.
  • ✅ Pelaku pelanggaran berulang: NoSuchElementException, TimeoutException, StaleElementReferenceException, dan ElementNotInteractableException menyebabkan sebagian besar kegagalan di dunia nyata.
  • 🧪 penanganan: Pasangan try-catch mengisolasi satu jenis kesalahan, beberapa blok catch memisahkan beberapa jenis kesalahan, dan akhirnya selalu dieksekusi.
  • ️ Eskalasi: Kata kunci throw dan throws mengembalikan pengecualian ke pemanggil ketika metode saat ini tidak dapat menyelesaikannya.
  • 📊 diagnosis: printStackTracFungsi e(), toString(), dan getMessage() masing-masing melaporkan tingkat detail yang berbeda tentang kegagalan tersebut.

Penanganan pengecualian di Selenium WebDriver dengan try-catch, throw dan finally

Apa itu Pengecualian?

Pengecualian adalah kesalahan yang terjadi pada saat eksekusi program. Saat program berjalan, bahasa pemrograman menghasilkan pengecualian yang harus ditangani, jika tidak, program akan mengalami crash.

Pengecualian tersebut menunjukkan bahwa, meskipun peristiwa tersebut dapat terjadi, jenis peristiwa ini jarang terjadi. Ketika suatu metode tidak dapat menangani pengecualian, pengecualian tersebut akan dilemparkan ke fungsi pemanggilnya. Dalam Java, yang mendorong sebagian besar Selenium Dalam suite, setiap pengecualian WebDriver tidak diperiksa, sehingga kompiler tidak pernah memaksa Anda untuk menangkapnya — kegagalan yang tidak ditangani hanya akan muncul saat runtime.

Jenis Pengecualian di Selenium webdriver

WebDriverException adalah kelas dasar dari hierarki, dan setiap pengecualian di bawahnya mewarisi darinya. Tabel tersebut mencantumkan semua 41 pengecualian yang mungkin Anda temui, beserta kondisi yang memunculkan masing-masing pengecualian.

# Pengecualian Ketika itu terjadi
1 ElementNotVisibleException Elemen yang sudah ada di DOM memiliki fitur yang diatur sebagai tersembunyi.
2 Pengecualian Tidak Dapat Dipilih Elemen tersebut ada di DOM tetapi tidak dapat dipilih, sehingga interaksi tidak mungkin dilakukan.
3 Tidak Ada Pengecualian Elemen Seperti Itu Elemen tersebut tidak dapat ditemukan dengan locator disediakan.
4 Tidak Ada Pengecualian Bingkai Seperti Itu The bingkai Target yang akan dialihkan tidak ada.
5 Tidak adaAlertPresentException Beralih ke sebuah waspada berjalan saat tidak ada peringatan yang ditampilkan.
6 TanpaSuchWindowException Jendela target yang akan dialihkan tidak ada.
7 Pengecualian ReferensiElemenUsang Elemen web terlepas dari yang sedang aktif. PENGHAKIMAN.
8 SessionNotFoundException WebDriver akan bekerja setelah Anda menutup browser.
9 Pengecualian Waktu Habis Suatu perintah tidak selesai tepat waktu — misalnya, elemen yang dicari tidak ditemukan dalam waktu tunggu.
10 Pengecualian Pengemudi Web Kelas dasar dari pengecualian WebDriver lainnya; juga muncul ketika WebDriver bertindak tepat setelah Anda menutup browser.
11 ConnectionClosedException Terdapat masalah pada driver.
12 ElementClickInterceptedException Elemen yang menerima peristiwa tersebut menyembunyikan elemen yang diminta untuk diklik.
13 Pengecualian Tidak Dapat Berinteraksi Elemen tersebut ada di DOM, tetapi tidak mungkin untuk berinteraksi dengannya.
14 ErrorInResponseException Terjadi kegagalan saat berinteraksi dengan Firefox ekstensi atau server driver jarak jauh.
15 ErrorHandler.UnknownServerException Digunakan sebagai placeholder ketika server mengembalikan kesalahan tanpa stack. trace.
16 ImeActivationFailedException Aktivasi mesin IME gagal.
17 ImeNotAvailableException Dukungan IME tidak tersedia.
18 InsecureCertificateException Navigasi membuat agen pengguna menekan sebuah peringatan sertifikat, yang dapat disebabkan oleh sertifikat TLS yang tidak valid atau kedaluwarsa.
19 Pengecualian Argumen Tidak Valid Argumen tersebut bukan termasuk tipe yang diharapkan.
20 Pengecualian Domain Cookie Tidak Valid A kue ditambahkan di bawah domain yang berbeda, bukan domain yang saat ini digunakan. URL.
21 Pengecualian Koordinat Tidak Valid Operasi interaksi yang cocok tidak valid.
22 InvalidElementStateException Perintah tidak dapat diselesaikan karena elemen tersebut tidak valid.
23 InvalidSessionIdException ID sesi yang diberikan tidak termasuk dalam sesi aktif, jadi sesi tersebut tidak ada atau tidak aktif.
24 Beralih ke Tidak ValidTargetPengecualian Bingkai atau jendela target yang akan dialihkan tidak ada.
25 JavascriptPengecualian Terjadi kesalahan saat menjalankan JavaSkrip diberikan oleh pengguna.
26 JsonException Sesi diminta ketika sesi belum dibuat.
27 Tidak Ada Atribut Pengecualian Atribut elemen tidak dapat ditemukan.
28 PindahTargetPengecualian di Luar Batas Target yang diberikan ke metode move() ActionChains tidak valid — misalnya, di luar dokumen.
29 Tidak Ada Pengecualian Konteks Itu ContextAware, yang melakukan pengujian perangkat seluler, tidak dapat menemukan konteks yang diminta.
30 Tidak Ada Pengecualian Cookie Tidak ditemukan cookie yang cocok dengan nama jalur yang diberikan di antara cookie dokumen yang sedang dibuka.
31 Pengecualian TidakDitemukan Subkelas dari WebDriverException, yang muncul ketika elemen pada DOM tidak ada.
32 Pengecualian Server Driver Jarak Jauh Server tidak merespons karena kemampuan yang dijelaskan tidak sesuai.
33 ScreenshotException Tidak mungkin menangkap layar.
34 SessionNotCreatedException Sesi baru tidak dapat dibuat dengan sukses.
35 UnableToSetCookieException Pengemudi tidak dapat mengatur cookie.
36 UnexpectedTagNameException Kelas pendukung tidak mendapatkan elemen web seperti yang diharapkan.
37 UnhandledAlertException Terdapat peringatan, tetapi WebDriver tidak dapat menjalankan operasi peringatan tersebut.
38 UnexpectedAlertPresentException Sebuah peringatan tak terduga muncul.
39 Pengecualian Metode Tidak Dikenal Perintah yang diminta sesuai dengan yang diketahui. URL tetapi bukan metode untuk hal spesifik tersebut. URL.
40 Pengecualian Browser yang Tidak Terjangkau Browser tidak dapat dibuka, atau mengalami kerusakan karena suatu alasan.
41 Perintah yang Tidak Didukung WebDriver jarak jauh tidak mengirimkan perintah yang valid seperti yang diharapkan.

Tiga hal mendominasi proses debugging sehari-hari: NoSuchElementException berarti kesalahan. XPath atau elemen yang belum dirender, TimeoutException berarti waktu tunggu terlalu singkat untuk suatu proses. AJAX respons, dan StaleElementReferenceException mengikuti dinamis Render ulang.

Cara Menangani Pengecualian di Selenium

Berikut adalah konstruksi standar untuk menangani pengecualian dalam Selenium WebDriver. Masing-masing polos. Java, jadi ini berfungsi di mana saja Skrip WebDriver tanpa pustaka tambahan.

Langkah 1) Coba tangkap

Metode ini dapat menangkap pengecualian menggunakan kombinasi kata kunci try dan catch. Perintah try menandai awal blok, dan catch ditempatkan di akhir blok try, di mana ia menyelesaikan pengecualian tersebut.

try
{
// Code
} catch (Exception e) {
// Code for Handling exception
}

Langkah 2) Beberapa blok tangkapan

Terdapat berbagai jenis pengecualian, dan satu blok kode dapat menimbulkan lebih dari satu pengecualian. Beberapa blok `catch` memungkinkan Anda menangani setiap jenis secara terpisah dengan kodenya masing-masing. Anda dapat menggunakan lebih dari dua blok `catch`, dan tidak ada batasan berapa banyak yang dapat Anda tambahkan.

try
{
//Code
} catch (ExceptionType1 e1) {
//Code for Handling Exception 1
} catch (ExceptionType2 e2) {
//Code for Handling Exception 2
}

Langkah 3) Lempar

Saat Anda ingin menghasilkan pengecualian, kata kunci `throw` meneruskannya untuk ditangani saat runtime. Gunakan `throw` ketika Anda meneruskan pengecualian tersebut alih-alih menyelesaikannya di dalam metode saat ini.

public static void anyFunction() throws Exception{

try {
// write your code here
} catch (Exception b) {
// Do whatever you want to perform 
// Throw the Exception back to the system
throw(b);
}
}

Langkah 4) Beberapa Pengecualian

Anda dapat menyebutkan berbagai pengecualian dalam klausa throws.

public static void anyFunction() throws ExceptionType1, ExceptionType2{

try {
// write your code here
} catch (ExceptionType1 e1) {
// Code to handle exception 1
} catch (ExceptionType2 e2) {
// Code to handle exception 2
}

Langkah 5) Akhirnya

Kata kunci finally membuat blok di bawah blok try. Blok ini dieksekusi terlepas dari apakah terjadi pengecualian atau tidak, sehingga menjadikannya tempat yang tepat untuk menutup driver atau melepaskan handle file.

try {
//Code
} catch (ExceptionType1 e1) {
//Catch block
} catch (ExceptionType2 e2) {
//Catch block
} catch (ExceptionType3 e3) {
//Catch block
} finally {
//The finally block always executes.
}

Metode untuk Menampilkan Informasi Pengecualian

Setelah pengecualian ditangkap, objek itu sendiri membawa detail diagnostik. Anda dapat menggunakan metode berikut untuk menampilkannya:

metode Apa yang dilaporkannya
printStackTrace() Mencetak tumpukan trace, nama pengecualian dan deskripsi berguna lainnya.
toString () Mengembalikan pesan teks yang menjelaskan nama dan deskripsi pengecualian.
dapatkan Pesan() Menampilkan deskripsi pengecualian secara terpisah.

Padukan ini dengan tangkapan layar yang diambil di dalam blok catch, dan eksekusi yang gagal akan menunjukkan apa yang rusak dan bagaimana tampilan halaman tersebut.

Pertanyaan Umum Demo Slot

Setiap pengecualian WebDriver tidak diperiksa, karena semuanya memperluas RuntimeException melalui WebDriverException. Oleh karena itu, kompiler tidak pernah menuntut try-catch, yang memang nyaman, tetapi juga berarti kegagalan locator yang tidak terlindungi hanya akan muncul saat pengujian benar-benar dijalankan.

Pindahkan elemen tersebut tepat sebelum Anda memprosesnya, alih-alih menyimpan referensi dalam cache. Loop percobaan ulang singkat yang mengabaikan pengecualian dan mengambil node lagi menangani rendering ulang React atau Vue jauh lebih andal daripada penundaan yang lebih lama.

Mereka menguranginya secara drastis tetapi tidak pernah menghilangkannya. Penantian eksplisit hanya memperbaiki masalah waktu — locator yang salah, klik yang dicegat, atau sesi yang ditutup tetap menimbulkan pengecualian yang hanya dapat ditangani oleh blok catch.

Selenium Versi 4 mempertahankan hierarki yang sama, tetapi konstruktor tunggu sekarang menerima Duration alih-alih batas waktu bilangan bulat, dan validasi argumen W3C yang lebih ketat berarti InvalidArgumentException muncul untuk nilai-nilai yang Selenium 3 diterima tanpa keluhan.

Mesin pencari lokasi yang dapat memperbaiki diri sendiri track yang mana selektor rusak dan diganti dengan alternatif yang berfungsi, yang menghilangkan sebagian besar kegagalan NoSuchElementException. Model serupa mengelompokkan tumpukan yang berulang. tracJadi, cacat yang benar-benar baru tidak terkubur di antara pengulangan yang tidak stabil.

Copilot sangat memperhatikan kode standar — kerangka try-catch, rantai catch dalam urutan yang benar, blok finally yang menghentikan driver. Namun, Copilot tidak dapat mengetahui pengecualian apa yang dilemparkan oleh aplikasi Anda sendiri, jadi tinjau setiap blok catch yang dihasilkan.

Mereka saling melengkapi. ITestListener memusatkan pencatatan dan tangkapan layar untuk setiap pengujian yang gagal, yang menjaga isi pengujian tetap bersih. Gunakan try-catch hanya jika skrip harus berlanjut setelah kesalahan terjadi, bukan hanya melaporkannya.

Konversikan driver ke TakesScreenshot di dalam blok catch atau finally dan tulis file sebelum sesi ditutup. Memberi nama gambar sesuai dengan metode pengujian membuat hasil CI yang gagal tetap terbaca tanpa perlu mereproduksi kesalahan secara lokal.

Ringkaslah postingan ini dengan: