Python xử lý ngoại lệ hết thời gian chờ trong selen như thế nào?

Đô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

Chủ Đề