Lỗi WebDriver

Bất kỳ lệnh WebDriver classic nào được gửi đi đều có thể nhận được một phản hồi lỗi. Lỗi được biểu diễn bằng một phản hồi HTTP với mã trạng thái HTTP trong khoảng 4xx hoặc 5xx, và một payload JSON chứa chi tiết của lỗi.

Payload

error object là một JSON Object có ba, và đôi khi bốn, trường:

error

Kiểu lỗi.

message

Mô tả ngắn gọn, dễ đọc của bản chất lỗi.

stacktrace

Báo cáo stacktrace của các frame stack đang hoạt động tại thời điểm lỗi xảy ra.

data (optional)

Dữ liệu tùy ý, do cách triển khai xác định, có thể hữu ích khi hiển thị cho người dùng. Nhiều driver bao gồm văn bản của user prompt khi gặp lỗi unexpected alert open.

Ví dụ

Ví dụ, một yêu cầu GET tới /session/1234/url, trong đó 1234 là một session giả, sẽ trả về phản hồi với trạng thái 404 Not Found và phần thân sau:

json
{
  "value": {
    "error": "invalid session id",
    "message": "No active session with ID 1234",
    "stacktrace": ""
  }
}

Việc driver chú thích lỗi bằng dữ liệu lỗi bổ sung là tùy chọn. Đáng chú ý là điều này thường gặp khi một user prompt, chẳng hạn window.alert, đã mở một hộp thoại modal sau khi thực thi yêu cầu lệnh WebDriver trước đó của bạn.

Vì cả WebDriver lẫn việc thực thi JavaScript đều bị dừng bởi hộp thoại như vậy, nên chúng ta thấy lỗi unexpected alert open trong phản hồi tiếp theo:

json
{
  "value": {
    "error": "unexpected alert open",
    "message": "",
    "stacktrace": "",
    "data": {
      "text": "Message from window.alert"
    }
  }
}

Trong hầu hết client, lỗi sẽ được biểu diễn bằng một dạng type lỗi hoặc representation của object. Trong Python nó được biểu diễn như một WebDriverException, trong Node.js là một WebDriverError, và trong Java cũng là một WebDriverException.

Bảng lỗi

Error type HTTP status code Description
element click intercepted 400 Bad Request Lệnh Element Click không thể hoàn tất vì element nhận các sự kiện đang che khuất phần tử được yêu cầu nhấp.
element not interactable 400 Bad Request Một lệnh không thể hoàn tất vì phần tử không thể tương tác bằng chuột hoặc bàn phím.
insecure certificate 400 Bad Request Việc điều hướng khiến user agent gặp cảnh báo chứng chỉ, thường là do TLS certificate đã hết hạn hoặc không hợp lệ.
invalid argument 400 Bad Request Các đối số truyền cho một lệnh không hợp lệ hoặc bị định dạng sai.
invalid cookie domain 400 Bad Request Đã có một nỗ lực không hợp lệ nhằm đặt cookie dưới một miền khác với trang hiện tại.
invalid element state 400 Bad Request Một lệnh không thể hoàn tất vì phần tử đang ở trạng thái không hợp lệ, ví dụ như cố gắng clear một phần tử không vừa có thể chỉnh sửa vừa có thể đặt lại.
invalid selector 400 Bad Request Một lệnh truy xuất phần tử đã cung cấp một chiến lược selector không xác định.
invalid session id 404 Not Found Session ID được cung cấp không được nhận diện, nghĩa là phiên hoặc không tồn tại hoặc không còn hoạt động. Lưu ý rằng một phiên đã bị xóa thì không thể dùng lại.
JavaScript error 500 Internal Server Error Đã xảy ra lỗi khi thực thi JavaScript do người dùng cung cấp.
move target out of bounds 500 Internal Server Error Mục tiêu cho tương tác chuột không nằm trong viewport của trình duyệt và không thể được đưa vào viewport đó.
no such alert 404 Not Found Đã cố thao tác với một user prompt khi không có prompt nào đang mở.
no such cookie 404 Not Found Không tìm thấy cookie nào khớp với đường dẫn đã cho trong số cookies của document hiện tại.
no such element 404 Not Found Không thể định vị một phần tử trên trang bằng các tham số tìm kiếm đã cho.
no such frame 404 Not Found Một lệnh để chuyển sang frame không thể được đáp ứng vì không tìm thấy frame đó.
no such window 404 Not Found Một lệnh để chuyển sang cửa sổ không thể được đáp ứng vì không tìm thấy cửa sổ đó.
script timeout 408 Request Timeout Một script không hoàn thành trước khi timeout hết hạn.
session not created 500 Internal Server Error Không thể tạo phiên mới, hoặc vì trình duyệt không thể khởi động, hoặc vì capabilities được cung cấp để khởi tạo phiên không khớp.
stale element reference 404 Not Found Một lệnh thất bại vì element được tham chiếu không còn được gắn vào DOM.
timeout 408 Request Timeout Một thao tác không hoàn thành trước khi timeout hết hạn.
unable to set cookie 500 Internal Server Error Một lệnh để đặt giá trị cookie không thể được đáp ứng.
unable to capture screen 500 Internal Server Error Không thể thực hiện chụp màn hình.
unexpected alert open 500 Internal Server Error Một hộp thoại modal đang mở, chặn thao tác này.
unknown command 404 Not Found Một lệnh không thể thực thi vì driver không biết đến nó.
unknown error 500 Internal Server Error Đã xảy ra một lỗi không xác định trong driver khi xử lý lệnh.
unknown method 405 Method Not Allowed Lệnh được yêu cầu khớp với một URL đã biết nhưng không khớp với phương thức cho URL đó.
unsupported operation 500 Internal Server Error Cho biết rằng một lệnh đáng lẽ phải thực thi đúng cách nhưng vì một lý do nào đó không thể được hỗ trợ.

Xem thêm