Bắt đầu một ngoại lệ - ngoại lệ trong mã tự động hóa rất phổ biến. 'Ngoại lệ' biểu thị trường hợp đặc biệt hoặc không phổ biến
Nội dung chính Hiển thị
- Ngoại lệ là gì?
- Các loại ngoại lệ trong Java và Selenium
- Xử lý ngoại lệ
- Các biến ngoại lệ phổ biến trong Selenium WebDriver
- Tránh và xử lý các biến ngoại lệ phổ biến [nêu trên]
- #1] tổ chức. openqa. selen. NoSuchElementException
- #2] tổ chức. openqa. selen. NoSuchWindowException
- #3] tổ chức. openqa. selen. NoSuchFrameException
- #4] tổ chức. openqa. selen. NoAlertPresentException
- #5] tổ chức. openqa. selen. Ngoại lệ Selector không hợp lệ
- #6] tổ chức. openqa. selen. ElementNotVisibleException
- #7] tổ chức. openqa. selen. ElementNotSelectableException
- #8] tổ chức. openqa. selen. Hết thời gian ngoại lệ
- Lời kết
Việc thực thi mã tự động có thể không được như mong đợi do nhiều yếu tố khách hàng liên quan đến quá trình thực thi như vấn đề ổn định mạng, sự cố Internet, ổn định của máy chủ, v. v. Từ đó chúng ta có thể sẽ nhận được ngoại lệ trả về do không đủ thời gian chờ hoặc cú pháp, tham số không chính xác, v. v
Vì vậy việc tìm hiểu về các ngoại lệ và cách xử lý chúng cũng rất cần thiết trong quá trình tạo các mã tự động hóa
Ngoại lệ là gì?
Ngoại lệ là các sự kiện do chương trình 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ý các 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ỡ quy trình thực thi bình thường của một chương trình. Một trong những mục đích quan trọng của lý do ngoại lệ công việc là ngăn chặn sự phá vỡ này để tiếp tục thực hiện chương trình dự án. Hoặc thực hiện một số hành động bất kỳ khi xảy ra một ngoại lệ nhất định
Khi có 1 ngoại lệ xảy ra thì 1 đối tượng ngoại lệ 'Ném một ngoại lệ' được khởi động cùng với các khối Try/Catch ví dụ như sau
try {
// Protected code
} catch [ExceptionName e] {
// Catch block
}
- Khi có ngoại lệ
4 bất kỳ điều gì xảy ra thì tuyên bốtry { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
5 sẽ được thực thitry { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
- Khi không còn ngoại lệ
4 thì câu lệnhtry { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
7 được thực thi và bỏ qua câu lệnhtry { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
5try { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
- Nên sử dụng try/catch để xử lý những việc làm sai và nằm ngoài tầm kiểm soát
Nên sử dụng các phương pháp
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
9 để tránh ngoại lệ trước, nếu không tránh được ngoại lệ thì mới xử lýƯu điểm và nhược điểm của phương pháp Tránh-Xử lý này
ưu điểm
- Làm giảm cơ hội nhận được ngoại lệ
- Nếu một ngoại lệ vẫn bị bắt, thì nó sẽ là một trường hợp thực sự đặc biệt đáng để kiểm tra
- Default time off. Mã tự động hóa Mục đích tìm ra lỗi và bạn không muốn thấy quá nhiều ngoại lệ không mong muốn và tìm lý do đằng sau từng lỗi đó
- Trong khối Catch, bạn đối chiếu với các trường hợp giá trị hơn
- Giảm lỗi sai
- Clearer report
nhược điểm
- Tăng số lượng mã dòng vì bạn thêm mã bổ sung để tránh ngoại lệ
- Cần hiểu biết về các API, lệnh và ngoại lệ của Trình điều khiển Web
Để tìm hiểu về phương pháp
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
9 này thì trước hết cần hiểu cơ bản về Xử lý ngoại lệ và các khối Try/CatchCác loại ngoại lệ trong Java và Selenium
Có 3 loại ngoại lệ
- Đã kiểm tra ngoại lệ
- Ngoại lệ không được kiểm tra
- Lỗi
Phân cấp lớp của ngoại lệ và lỗi
#1] Kiểm tra ngoại lệ. was process in the biên dịch thời gian và sẽ gây ra lỗi biên dịch nếu nó không được bắt và xử lý trong thời biên dịch [bắt buộc phải xử lý để có thể tiếp tục biên dịch chương trình]
Ví dụ. FileNotFoundException, IOException
#2] Ngoại lệ không được kiểm tra. trong trường hợp này, biên dịch biên dịch không bắt buộc phải xử lý. Bỏ qua trình biên dịch trong thời gian biên dịch
Ví dụ. ArrayIndexoutOfBoundException
#3] Lỗi. Khi một kịch bản nghiêm trọng xảy ra và chương trình không thể khôi phục lại thì JVM sẽ tạo ra một lỗi. Khối try-catch không thể xử lý lỗi này. Ngay cả khi người dùng cố gắng xử lý lỗi bằng cách sử dụng khối try-catch thì nó cũng không thể khôi phục sau lỗi
Ví dụ. Lỗi khẳng định, OutOfMemoryError
Xử lý ngoại lệ
Thử và bắt khối
Các khối try-catch thường được sử dụng để xử lý các ngoại lệ. Các loại dự kiến ngoại lệ sẽ được khai báo trong block catch [//IOException tức là]. Khi một ngoại lệ xuất hiện trong khối thử, ngay lập tức trình điều khiển sẽ điều hướng đến khối
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
5 [//tức là. printStackTrace[]]try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
Có thể kết hợp bắt nhiều ngoại lệ trong 1 khối thử
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
ném ngoại lệ
Từ khóa
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
12 trong java được sử dụng để ném/xóa một ngoại lệ thay vì xử lý nó. Tất cả các ngoại lệ đều là ngoại lệ được kiểm tra có thể bị ném bằng các phương thức. Ví dụtry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
1cuối cùng chặn
Khối thực thi bất kể việc thực thi khối try-catch như thế nào và được thực thi ngay sau khi khối try/catch hoàn tất
Đóng tệp, ngắt kết nối cơ sở dữ liệu, v. v. could be done in this block [cuối cùng]. Ví dụ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
3Trong ví dụ trên, luồng BufferReader đã bị đóng trong khối
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
13. Lệnh try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
14 sẽ luôn được thực thi bất kể việc thực hiện khối thi thử - bắt như thế nàoChú thích
- Khối
13 là khối độc lập, có thể tồn tại mà không cần phải có bất kỳ khối bắt nàotry { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
- Có thể có nhiều khối bắt nhưng chỉ có 1 khối duy nhất
13try { br = new BufferedReader[new FileReader["Data"]]; } catch[IOException ie] { ie.printStackTrace[]; } catch[FileNotFoundException file]{ file.printStackTrace[]; }
Ném được
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
17 là lớp cha của lỗi và ngoại lệ. Nếu bạn không chắc chắn về các loại lỗi và ngoại lệ, thì nên sử dụng lớp try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
17 để đảm bảo an toàn, nó có thể bắt cả lỗi và ngoại lệ. Ví dụtry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
0Các biến ngoại lệ phổ biến trong Selenium WebDriver
Selenium có một tệp ngoại lệ riêng. Trong khi phát triển các tập lệnh Selenium, bạn cần phải xử lý hoặc loại bỏ các ngoại lệ này
Dưới đây là một số ví dụ về các trường hợp ngoại lệ này
Tất cả các lớp thời gian chạy ngoại lệ trong Selenium WebDriver đều nằm dưới lớp cha WebDriverException
Có rất nhiều lớp ngoại lệ trong WebDriverException, phổ biến hay thấy 1 số lớp dưới đây
- NoSuchElementException. Ngoại lệ này là truy cập vào một phần tử không có sẵn trên trang
- NoSuchElementException
- NoSuchWindowException
- NoSuchFrameException
- NoAlertPresentException. Người dùng cố gắng xử lý hộp cảnh báo nhưng cảnh báo không xuất hiện
- Ngoại lệ Selector không hợp lệ
- ElementNotVisibleException. Selenium cố gắng tìm một phần tử nhưng phần tử đó không hiển thị trong trang
- ElementNotSelectableException
- Hết thời gian ngoại lệ
- NoSuchSessionException
- StaleElementReferenceException
- WebDriverException. Lỗi ngoại lệ xảy ra khi mã không thể khởi động WebDriver
Tránh và xử lý các biến ngoại lệ phổ biến [nêu trên]
#1] tổ chức. openqa. selen. NoSuchElementException
Lớp ngoại lệ thường thấy this is an layer con of layer
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
19. Trường hợp ngoại lệ xảy ra khi WebDriver không thể tìm thấy và định vị các phần tử. Điều này thường xảy ra khi người kiểm tra viết bộ định vị phần tử không chính xác theo phương thức try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
30Vui lòng xem xét rằng trong ví dụ dưới đây, id chính xác cho trường văn bản là "firstfield" nhưng người kiểm tra đã viết sai là "fistfield". Trong trường hợp này, WebDriver không thể định vị phần tử và
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
31 sẽ bị bắn ratry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
4Phòng Tránh Và Xử Lý. Please try to given a queue. Ví dụ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
5Lệnh chờ đợi 10 giây cho sự hiện diện của phần tử web với id 'gửi'. Sau đó, lệnh
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
7 thực hiện nhấp chuột vào nó. Nếu phần tử có sẵn nhưng nhấp chuột vẫn không thành công, một ngoại lệ sẽ bị bắtThời gian sử dụng là một phương pháp biến phổ biến trong quá trình kiểm tra tự động để tạo khoảng dừng giữa các bước. Bằng cách thêm khối Try/Catch, có thể chắc chắn rằng chương trình sẽ tiếp tục ngay cả khi công việc chờ đợi không thể giúp ích được gì
#2] tổ chức. openqa. selen. NoSuchWindowException
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
33 nằm trong lớp try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
19. Ngoại lệ này được chụp khi WebDriver cố gắng chuyển sang một cửa sổ không hợp lệĐoạn mã dưới đây bắn về
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
35 nếu cửa sổ không tồn tại hoặc không có sẵn để chuyển đổitry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
0Phòng Tránh Và Xử Lý. Sử dụng window handle để lấy tập hợp các cửa sổ đang hoạt động và sau đó thực hiện các hành động tương tự
Trong ví dụ dưới đây, công tắc trình điều khiển được thực thi đối với mỗi tay cầm cửa sổ. Do đó, nguy cơ truyền một tham số cửa sổ sai giảm xuống
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
1#3] tổ chức. openqa. selen. NoSuchFrameException
Khi WebDriver cố gắng chuyển sang một khung không hợp lệ,
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
36 trong lớp try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
19 bị bắn raĐoạn mã ví dụ dưới đây sẽ bắn về
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
38 nếu các khung try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
39 không tồn tại hoặc không có sẵntry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
00Xử lý ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
0Trong trường hợp này, ngoại lệ được chụp ra ngay cả khi các khung không được tải xuống
Phòng Tránh Và Xử Lý. Please try to given a queue. Ví dụ
Trong ví dụ dưới đây, WebDriver đợi 10 giây để tải khung. Nếu các khung có sẵn và vẫn có một ngoại lệ, thì nó sẽ bị bắt
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
1#4] tổ chức. openqa. selen. NoAlertPresentException
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
01 nằm trong try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
19 được chụp khi WebDriver cố gắng chuyển sang cảnh báo không khả thitry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
2try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
03 sẽ bị bắn ra nếu gọi theo phương thức try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
04 hoạt động trên Lớp Cảnh báo khi một cảnh báo không xuất hiện trên màn hìnhXử lý ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
3Trong trường hợp này, ngoại lệ bị ném ra ngay cả khi cảnh báo không được tải xuống đầy đủ
Phòng Tránh Và Xử Lý. Trong mọi trường hợp dự kiến có cảnh báo, luôn sử dụng chức năng chờ rõ ràng hoặc chờ thông thạo trong một khoảng thời gian cụ thể. Nếu cảnh báo có sẵn và vẫn có ngoại lệ, thì nó sẽ bị bắt
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
4#5] tổ chức. openqa. selen. Ngoại lệ Selector không hợp lệ
Đây là lớp con của lớp
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
05, xảy ra khi một bộ lựa chọn không chính xác hoặc không hợp lệ về mặt cú pháp. Ngoại lệ này thường xảy ra khi sử dụng bộ định vị XPATH. Ví dụtry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
5Điều này sẽ tạo ra một lỗi không hợp lệ do cú pháp XPATH không chính xác
Phòng tránh và xử lý. Để tránh điều này, chúng ta nên kiểm tra bộ định vị được sử dụng vì bộ định vị không thể chính xác hoặc sai cú pháp. Sử dụng Firebug để tìm xpath có thể giảm trường hợp ngoại lệ này
Cách xử lý ngoại lệ này sử dụng Try/Catch
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
6#6] tổ chức. openqa. selen. ElementNotVisibleException
Lớp
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
06 là một lớp con của lớp try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
07. Ngoại lệ này được chụp khi WebDriver cố gắng thực hiện một hành động trên một phần web ẩn phần tử, không thể tương tác với phần tử này. Thông báo là phần tử web đang ở trạng thái ẩnVí dụ. trong đoạn mã bên dưới, nếu nút có id = ‘submit’ bị ‘ẩn’ trong HTML, thì
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
08 sẽ bị bắn ratry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
7Trong trường hợp này, ngoại lệ được chụp ra ngay cả khi trang chưa được tải xuống đầy đủ
Phòng Tránh Và Xử Lý. Chúng ta có thể sử dụng lệnh chờ cho phần tử nhận được hoàn toàn. Đoạn mã bên dưới đợi 10 giây để xuất hiện phần tử. Nếu phần tử hiển thị và vẫn ném ngoại lệ, nó sẽ bị bắt
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
8#7] tổ chức. openqa. selen. ElementNotSelectableException
Ngoại lệ này nằm trong lớp
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
09. try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
40 chỉ ra rằng phần tử web hiện diện trong trang web nhưng không được chọnVí dụ. đoạn mã bên dưới sẽ trả về một ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
40 nếu id “swift” bị vô hiệu hóa [vô hiệu hóa]try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
}
9Xử lý ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
0Trong trường hợp này, ngoại lệ được ném ra ngay cả khi phần tử được bật sau một thời gian
Phòng Tránh Và Xử Lý. Add queue đợi để đợi cho đến khi phần tử có thể nhấp được. Nếu vẫn có ngoại lệ, nó sẽ bị bắt
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
1#8] tổ chức. openqa. selen. Hết thời gian ngoại lệ
Ngoại lệ này xảy ra khi lệnh hoàn thành mất nhiều hơn thời gian chờ cho phép. Các lệnh Wait Wait chủ yếu được sử dụng trong WebDriver để tránh ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
06. Đôi khi kiểm tra trang có thể chưa được tải xuống hoàn toàn trước lệnh tiếp theo trong chương trình. Nếu WebDriver cố gắng tìm một phần tử trong trang web trước khi trang tải xuống đầy đủ, thì ngoại lệ try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
06 sẽ bị bắn ra. Để tránh ngoại lệ này, lệnh chờ được thêm vàoTuy nhiên, nếu các thành phần không tải ngay cả sau khi chờ đợi, thì ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
44 sẽ bị bắn ratry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
2Trong đoạn mã trên, thời gian chờ định mức là 10 giây được thêm vào. If trang www. trợ giúp kiểm thử phần mềm. com không được tải xuống trong vòng 10 giây, thì ngoại lệ
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
45 sẽ bị bắn raPhòng tránh và xử lý. Để tránh điều này, chúng ta có thể kiểm tra thủ thuật thời gian tải trang trung bình và điều chỉnh thời gian chờ. Hoặc, có thể thêm chức năng chờ rõ ràng [thời gian chờ rõ ràng] bằng trình thực thi JavaScript cho đến khi trang được tải xuống
Trong ví dụ dưới đây, trình thực thi JavaScript được sử dụng. Sau khi điều hướng trang, gọi JavaScript trả về
try {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
46 trong 20 giây cho đến khi “hoàn tất” được trả vềtry {
br = new BufferedReader[new FileReader["Data"]];
} catch[IOException ie]
{
ie.printStackTrace[];
} catch[FileNotFoundException file]{
file.printStackTrace[];
}
3Lời kết
Xử lý ngoại lệ là phần thiết yếu của mọi chương trình java cũng như tập lệnh Selenium. Nhờ công việc xử lý các ngoại lệ theo những cách thông minh, chúng ta có thể xây dựng bộ mã hóa mạnh mẽ và tối ưu. Nếu bạn quan tâm có thể xem bài viết gốc tại đây