Xử lý ngoại lệ trong Selenium Trình điều khiển web (Các loại)
⚡ Tóm tắt thông minh
Xử lý ngoại lệ trong Selenium WebDriver ngăn chặn lệnh bị lỗi dừng lại.ping một đợt chạy thử toàn diện. Java Thử bắt bóng, nhiều pha chặn bóng, ném bóng, các pha ném bóng và cuối cùng mỗi phương pháp đều mang lại một cách phục hồi khác nhau cho kịch bản.
Ngoại lệ là gì?
Ngoại lệ là một lỗi xảy ra trong quá trình thực thi chương trình. Trong khi chương trình đang chạy, ngôn ngữ lập trình sẽ tạo ra một ngoại lệ cần được xử lý, nếu không chương trình sẽ bị sập.
Ngoại lệ này cho thấy rằng, mặc dù sự kiện có thể xảy ra, nhưng loại sự kiện này hiếm khi xảy ra. Khi một phương thức không thể xử lý ngoại lệ, nó sẽ được ném về hàm gọi nó. Trong Java, điều này thúc đẩy hầu hết Selenium Trong các bộ kiểm thử, mọi ngoại lệ của WebDriver đều không được kiểm tra, vì vậy trình biên dịch không bao giờ bắt buộc bạn phải bắt nó — lỗi không được xử lý chỉ xuất hiện khi chạy chương trình.
Các loại ngoại lệ trong Selenium webdriver
WebDriverException là lớp cơ sở của hệ thống phân cấp, và mọi ngoại lệ bên dưới đều kế thừa từ nó. Bảng liệt kê tất cả 41 ngoại lệ bạn có thể gặp phải, cùng với điều kiện gây ra mỗi ngoại lệ.
| # | Ngoại lệ | Khi nó xảy ra |
|---|---|---|
| 1 | ElementNotVisibleException | Một phần tử hiện có trong DOM có thuộc tính được đặt là ẩn. |
| 2 | Ngoại lệ ElementNotSelectable | Phần tử này có trong DOM nhưng không thể được chọn, do đó không thể tương tác. |
| 3 | NoSuchElementException | Không tìm thấy phần tử đó bằng định vị cung cấp. |
| 4 | NoSuchFrameException | khung Mục tiêu cần chuyển sang không tồn tại. |
| 5 | NoAlertPresentException | Chuyển sang một cảnh báo Chương trình sẽ chạy ngay cả khi không có cảnh báo nào được hiển thị. |
| 6 | Không có như vậyCửa sổNgoại lệ | Cửa sổ mục tiêu cần chuyển đến không tồn tại. |
| 7 | Phần tử cũTham khảoNgoại lệ | Phần tử web được tách rời khỏi phần tử hiện tại. DOM. |
| 8 | Ngoại lệ SessionNotFoundException | WebDriver vẫn hoạt động sau khi bạn đóng trình duyệt. |
| 9 | Hết thời gian ngoại lệ | Lệnh không hoàn thành kịp thời — ví dụ, phần tử cần tìm không được tìm thấy trong thời gian chờ. |
| 10 | WebDriverNgoại lệ | Lớp cơ sở của các ngoại lệ WebDriver khác; cũng được đưa ra khi WebDriver hoạt động ngay sau khi bạn đóng trình duyệt. |
| 11 | ConnectionClosedException | Có sự ngắt kết nối ở trình điều khiển. |
| 12 | ElementClickInterceptedException | Phần tử nhận sự kiện đang che khuất phần tử được yêu cầu nhấp chuột. |
| 13 | ElementNotInteractableException | Phần tử đó có tồn tại trong DOM, nhưng không thể tương tác với nó. |
| 14 | Lỗi trong phản hồi | Đã xảy ra lỗi trong quá trình tương tác với... Firefox tiện ích mở rộng hoặc máy chủ trình điều khiển từ xa. |
| 15 | ErrorHandler.UnknownServerException | Được sử dụng như một phần giữ chỗ khi máy chủ trả về lỗi mà không có ngăn xếp. trace. |
| 16 | ImeActivationFailedException | Quá trình kích hoạt công cụ IME đã thất bại. |
| 17 | Ngoại lệ ImeNotAvailableException | Hiện tại chưa hỗ trợ IME. |
| 18 | InsecureCertificateException | Điều hướng khiến tác nhân người dùng truy cập vào một cảnh báo chứng chỉĐiều này có thể do chứng chỉ TLS không hợp lệ hoặc đã hết hạn gây ra. |
| 19 | Không hợp lệ | Đối số không thuộc kiểu dữ liệu mong đợi. |
| 20 | InvalidCookieDomainException | A Cookie được thêm vào dưới một tên miền khác thay vì tên miền hiện tại. URL. |
| 21 | Ngoại lệ tọa độ không hợp lệ | Thao tác tương tác khớp không hợp lệ. |
| 22 | InvalidElementStateException | Lệnh không thể hoàn thành vì phần tử không hợp lệ. |
| 23 | InvalidSessionIdException | Mã định danh phiên được cung cấp không nằm trong số các phiên đang hoạt động, vì vậy phiên đó không tồn tại hoặc không hoạt động. |
| 24 | InvalidSwitchToTargetNgoại lệ | Khung hoặc cửa sổ mục tiêu cần chuyển đến không tồn tại. |
| 25 | JavascriptNgoại lệ | Đã xảy ra lỗi trong quá trình thực thi JavaTập lệnh do người dùng cung cấp. |
| 26 | JsonException | Phiên làm việc được yêu cầu khi phiên làm việc đó chưa được tạo. |
| 27 | NoSuchAttributeException | Không tìm thấy thuộc tính của một phần tử. |
| 28 | Di chuyểnTargetNgoại lệ ngoài phạm vi | Mục tiêu được cung cấp cho phương thức move() của ActionChains không hợp lệ — ví dụ, nằm ngoài tài liệu. |
| 29 | NoSuchContextException | ContextAware, công cụ dùng để kiểm tra thiết bị di động, không thể tìm thấy ngữ cảnh được yêu cầu. |
| 30 | NoSuchCookieException | Không tìm thấy cookie nào khớp với tên đường dẫn đã cho trong số các cookie của tài liệu đang được duyệt. |
| 31 | NotFoundException | Một lớp con của WebDriverException, được ném ra khi một phần tử trên DOM không tồn tại. |
| 32 | Ngoại lệ máy chủ điều khiển từ xa | Máy chủ không phản hồi vì các chức năng được mô tả không phù hợp. |
| 33 | ScreenshotException | Không thể chụp màn hình. |
| 34 | SessionNotCreatedException | Không thể tạo phiên mới thành công. |
| 35 | Không thể thiết lập CookieException | Trình điều khiển không thể thiết lập cookie. |
| 36 | Ngoại lệ tên thẻ không mong đợi | Lớp hỗ trợ không nhận được phần tử web như mong đợi. |
| 37 | UnhandledAlertException | Có một cảnh báo, nhưng WebDriver không thể thực hiện thao tác xử lý cảnh báo đó. |
| 38 | UnexpectedAlertPresentException | Một cảnh báo bất ngờ xuất hiện. |
| 39 | UnknownMethodException | Lệnh được yêu cầu khớp với một lệnh đã biết. URL nhưng không có phương pháp nào dành riêng cho trường hợp đó. URL. |
| 40 | Lỗi trình duyệt không thể truy cập | Trình duyệt không thể mở hoặc bị lỗi vì lý do nào đó. |
| 41 | UnsupportedCommandException | Trình điều khiển web từ xa không gửi các lệnh hợp lệ như mong đợi. |
Ba lỗi thường gặp hàng ngày: NoSuchElementException có nghĩa là sai. Xpath hoặc một phần tử chưa được hiển thị, TimeoutException có nghĩa là thời gian chờ quá ngắn. AJAX phản hồi, và StaleElementReferenceException theo sau năng động Kết xuất lại.
Cách xử lý ngoại lệ trong Selenium
Dưới đây là các cấu trúc tiêu chuẩn để xử lý ngoại lệ trong Selenium WebDriver. Mỗi cái đều đơn giản. JavaVì vậy, nó hoạt động trong mọi trường hợp. Tập lệnh WebDriver không cần thư viện bổ sung.
Bước 1) Thử bắt
Phương pháp này có thể bắt ngoại lệ bằng cách sử dụng kết hợp các từ khóa try và catch. Lệnh try đánh dấu sự bắt đầu của khối lệnh, và catch được đặt ở cuối khối try, nơi nó xử lý ngoại lệ.
try { // Code } catch (Exception e) { // Code for Handling exception }
Bước 2) Nhiều khối bắt
Có nhiều loại ngoại lệ khác nhau, và một khối mã duy nhất có thể gây ra nhiều hơn một loại. Nhiều khối catch cho phép bạn xử lý từng loại riêng biệt bằng mã riêng. Bạn có thể sử dụng nhiều hơn hai khối catch, và không có giới hạn về số lượng bạn có thể thêm vào.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Bước 3) Ném
Khi bạn muốn tạo ra một ngoại lệ, từ khóa `throw` sẽ chuyển nó cho hệ thống xử lý tại thời điểm chạy. Hãy sử dụng `throw` khi bạn chuyển tiếp một ngoại lệ thay vì giải quyết nó trong phương thức hiện tại.
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); } }
Bước 4) Nhiều ngoại lệ
Bạn có thể đề cập đến nhiều trường hợp ngoại lệ khác nhau trong mệnh đề 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 }
Bước 5) Cuối cùng
Từ khóa finally tạo ra một khối lệnh nằm bên dưới khối try. Khối lệnh này được thực thi bất kể có xảy ra ngoại lệ hay không, do đó đây là nơi thích hợp để đóng trình điều khiển hoặc giải phóng tay cầm tệp.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Các phương pháp hiển thị thông tin ngoại lệ
Khi một ngoại lệ được bắt, chính đối tượng đó sẽ chứa thông tin chẩn đoán. Bạn có thể sử dụng các phương thức sau để hiển thị thông tin đó:
| Phương pháp | Nội dung báo cáo |
|---|---|
| printStackTrace () | In ra ngăn xếp trace, tên của ngoại lệ và các mô tả hữu ích khác. |
| toString () | Trả về một thông báo văn bản mô tả tên và mô tả lỗi ngoại lệ. |
| getMessage () | Hiển thị mô tả của ngoại lệ một cách riêng biệt. |
Kết hợp những thông tin này với ảnh chụp màn hình được chụp bên trong khối catch, và một lần chạy thất bại sẽ cho thấy cả lỗi xảy ra ở đâu và trang trông như thế nào.
