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.
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.
