Đôi khi điều này hoạt động và đôi khi nó không hoạt động và tôi gặp lỗi Phần tử không thể nhấp được tại điểm [X, Y]. Tôi đã thêm mã để tối đa hóa trang web trong trường hợp liên kết bị chồng chéo bởi thứ gì đó
Có vẻ như lỗi là do trang web không phải lúc nào cũng tải kịp thời. Để khắc phục điều này, tôi đã cố gắng sử dụng các thư viện điều kiện mong đợi và chờ đợi của Selenium
Tôi đã nghĩ ra cách sau nhưng nó không hoạt động, tôi chỉ nhận được TimeoutException
link = wait[driver, 60].until[EC.element_to_be_clickable[[By.XPATH,'//*[@id="zbCenter"]/div/span/table[3]/tbody/tr/td/table/tbody/tr/td[8]/nobr/a/b']]]
link.click[]
Tôi nghĩ XPATH có lẽ là lựa chọn tốt nhất ở đây hoặc có lẽ là tên lớp, nhưng không có ID. Tôi không chắc có phải vì liên kết nằm trong một bảng nào đó mà nó không hoạt động hay không, nhưng tôi thấy lạ là đôi khi nó hoạt động mà không cần phải đợi gì cả
Tôi đã thử cách tiếp cận của Jacob. Vấn đề là tôi muốn nó năng động để nó hoạt động cho các công ty khác. Ngoài ra, khi tôi lần đầu tiên truy cập vào trang tóm tắt, URL có những thứ khác ở cuối nên tôi không thể thêm /financials vào URL
Đây là URL nó cung cấp cho tôi. https. //www. người sàng lọc thị trường. com/ĐÔ LA-TỔNG HỢP-CÔNG TY CỔ PHẦN-5699818/?type recherche=rapid mots=DG
Bắt một ngoại lệ trong mã tự động hóa là rất phổ biến. 'Ngoại lệ' như từ chỉ ra, là trường hợp đặc biệt hoặc không phổ biến
Việc thực thi mã tự động hóa thường có thể không diễn ra như mong đợi do nhiều yếu tố liên quan đến quá trình thực thi, chẳng hạn như sự cố ổn định mạng, sự cố Internet, sự ổn định của máy chủ, v.v. Chúng tôi có thể gặp ngoại lệ do không đủ thời gian chờ hoặc cú pháp, tham số không chính xác, v.v.
Trong hướng dẫn WebDriver lần trước, chúng ta đã tìm hiểu về 3 loại phần tử web quan trọng khác nhau như Bảng Web, Khung và phần tử Động và cơ chế xử lý của chúng trong tập lệnh Selenium
Trước khi tiếp tục với các hướng dẫn về Framework trong loạt bài đào tạo về Selenium này, ở đây trong hướng dẫn này, chúng ta sẽ tìm hiểu về các loại ngoại lệ và cách xử lý các ngoại lệ trong các tập lệnh Java và Selenium. Nhà phát triển/người thử nghiệm sử dụng khung xử lý ngoại lệ để xử lý ngoại lệ trong tập lệnh Selenium
Bạn sẽ học được gì
Ngoại lệ là gì?
Ngoại lệ là các sự kiện do đó chương trình java kết thúc đột ngột mà không đưa ra kết quả mong đợi. Java cung cấp một khung nơi người dùng có thể xử lý các ngoại lệ
Quá trình xử lý Ngoại lệ được gọi là Xử lý Ngoại lệ
Các ngoại lệ cần được xử lý vì chúng phá vỡ luồng thực thi bình thường của chương trình. Một trong những mục đích quan trọng của xử lý ngoại lệ là ngăn chặn sự phá vỡ này và tiếp tục thực hiện chương trình. Đôi khi, bạn có thể muốn thực hiện một số hành động khi xảy ra một ngoại lệ nhất định
Khi một ngoại lệ xảy ra, một đối tượng ngoại lệ được tạo ra, về mặt kỹ thuật được gọi là 'Ném một ngoại lệ' và chúng tôi thêm các khối Thử/Bắt như,
try { // Protected code } catch [ExceptionName e] { // Catch block }
#1] Đoạn mã có thể đưa ra ngoại lệ được thêm vào bên trong khối Thử
#2] Câu lệnh Catch bắt ngoại lệ và lấy nó làm tham số
#3] Khi không có ngoại lệ nào được đưa ra, câu lệnh try được thực thi chứ không phải câu lệnh catch
Thí dụ. Khi tập lệnh Selenium bị lỗi do định vị sai, thì nhà phát triển sẽ có thể hiểu lý do lỗi và điều này có thể đạt được dễ dàng nếu ngoại lệ được xử lý đúng cách trong chương trình
Theo kinh nghiệm của tôi, tốt nhất là cố gắng tránh các trường hợp ngoại lệ của WebDriver bất cứ khi nào có thể và nắm bắt các trường hợp thực sự đặc biệt. Sử dụng try/catch để xử lý những sự cố nằm ngoài tầm kiểm soát của tôi
Tránh những cái tôi có thể Bắt những người khác
Đây là chiến lược tốt nhất đã làm việc cho tôi
Ví dụ: hãy xem xét một trang thử nghiệm mất nhiều thời gian hơn bình thường để tải trên máy chủ thử nghiệm. Chúng tôi sẽ nhận được các ngoại lệ thường xuyên khi thực hiện các hành động trên trang này. Vì vậy, thay vì chỉ nắm bắt điều này mọi lúc, chúng ta có thể
- Thêm lệnh chờ và cố gắng tránh ngoại lệ
- Sử dụng 'Try/Catch' để xử lý trong trường hợp xảy ra trường hợp thực sự đặc biệt
Do đó làm giảm cơ hội cho các trường hợp ngoại lệ
Ưu điểm và nhược điểm của phương pháp Tránh-Xử lý
Ưu điểm
Nhược điểm
1] Cách tiếp cận này làm giảm khả năng nhận ngoại lệ. 1] Tăng số dòng mã vì bạn thêm mã bổ sung để tránh ngoại lệ Nếu ngoại lệ vẫn bị phát hiện 2] sẽ là một trường hợp thực sự đặc biệt đáng để kiểm tra 2] Cần hiểu rõ hơn về API Trình điều khiển Web, các lệnh và ngoại lệ Giảm thời gian gỡ lỗi. Mã tự động hóa nhằm mục đích tìm lỗi và bạn không muốn thấy quá nhiều trường hợp ngoại lệ không mong muốn 3] và tìm lý do đằng sau mỗi trường hợp đó4] Trong khối Bắt, bạn xử lý các trường hợp hợp lệ hơn5] Giảm lỗi sai6] Báo cáo rõ ràng hơn