Gỡ một lần chạy thất bại
Một lần chạy dừng ở đâu đó và bạn không biết vì sao. Đây là thứ tự nên làm — từ rẻ nhất đến can thiệp nhiều nhất, và phần lớn thất bại được xác định ngay ở hai bước đầu.
1. Đọc mã lỗi, đừng đọc câu văn
Lần chạy báo một mã lỗi ổn định. Tra nó trong Mã lỗi trước khi suy diễn. Ba mã gây nhầm lẫn nhiều nhất:
| Mã | Thực chất nghĩa là gì |
|---|---|
TRANSITION_NOT_FOUND | Một node trả về route không có edge nào nối. Node chạy tốt; đồ thị của bạn có lỗ |
MAX_NODE_EXECUTIONS_EXCEEDED | Một vòng lặp chạy nhiều node hơn rào chắn cho phép. Không có gì hỏng — trần quá thấp, hoặc vòng lặp không thoát |
MAX_CONSECUTIVE_FAILURES_EXCEEDED | Có gì đó hỏng liên tục mà không gì thành công ở giữa. "Không thấy" của phép phát hiện không gây ra điều này — hãy tìm một node hành động |
2. Tìm node cuối cùng đã chạy
Log gọi tên nó. Node đó là chỗ bạn bắt đầu — nhưng phải cẩn thận xem nên quy lỗi cho node nào:
- Nếu node cuối là một phép phát hiện, rất thường là nó đã làm đúng việc. Một
Find Imagekhông thấy gì báo statussuccessvà đi tới Failure. Nếu Failure chưa nối, lần chạy chết vớiTRANSITION_NOT_FOUNDtại phép phát hiện — và phép phát hiện không phải lỗi. Xem status với route. - Nếu node cuối là một hành động, hãy xem màn hình lúc đó là gì. Đó là bước 3.
3. Bật Run Evidence và tái hiện
Run Evidence chụp ảnh trước flow, sau mỗi hành động UI, và khi hoàn tất. Đây là công cụ gỡ lỗi hữu dụng nhất của sản phẩm, vì nó thay việc đoán về màn hình bằng việc nhìn vào nó.
- Trên Bảng điều khiển Instance, đặt Evidence Folder….
- Bật Run Evidence chỉ trên một instance — không phải cả cụm.
- Chạy lại, rồi mở ảnh từ View Logs / Activity Logs.
Hãy xem khung hình trước hành động bị hỏng. Chín trên mười lần, một trong các điều này đúng:
- App không ở màn hình mà flow giả định.
- Một popup đang che mục tiêu.
- Hành động nổ trước khi màn hình tr ước kịp chạy xong animation — khung hình chứng minh điều đó.
Evidence ghi một ảnh mỗi hành động. Một flow dài bật evidence sinh ra thư mục rất lớn. Bật khi đang chẩn đoán, tắt cho các lần chạy vận hành.
4. Bước qua quyết định bằng Debug Mode
Nếu câu hỏi là "vì sao nó đi nhánh đó?", đừng đọc nữa — hãy xem.
Chuột phải một node → Add debug breakpoint, rồi bật Debug Mode. Lần chạy dừng tại breakpoint và bạn tiến từng node, xem panel Execution báo Current Node, Elapsed, Duration, và với node OCR là Extracted variables.
Đặt breakpoint quanh phần bạn không tin. Debug Mode mà không có breakpoint sẽ dừng tại mọi node — đó là chủ đích nhưng cực chậm trên flow dài.
5. Cô lập node bằng Test Node
Khi đã nghi một node cụ thể, hãy test riêng nó. Test Node chỉ chạy node đó với instance đang gắn, và Test Result hiện điều đã xảy ra.
Đây là nơi các vấn đề mang tính cảm nhận được giải quyết bằng một con số thay vì một ý kiến:
| Node | Test Node cho bạn biết |
|---|---|
| Find Image | Độ tin cậy thật. Nếu điểm tốt nhất là 0.62 trước ngưỡng 0.88 thì template là vấn đề — không phải ngưỡng |
| Read Text | Bản OCR thô và các biến đã trích. Nếu văn bản thô đã sai thì region hoặc kiểu nội dung sai — không phải pattern của bạn |
| Check Region | Giá trị đo được so với kỳ vọng và sai số |
6. Khi Test Node đạt mà flow vẫn hỏng
Đây là trường hợp kinh điển, và có hai nguyên nhân thường gặp:
Nguồn của node không nằm phía trên trên đường đã thực thi. Một Click lấy tọa độ từ một node Find Image chỉ chạy được nếu Find Image đó thực sự đã chạy trên đường này. Node copy-paste gặp điều này liên tục — thiết lập được copy, quan hệ thì không. Mã lỗi là COORDINATE_SOURCE_UNAVAILABLE.
Một phép xác minh đọc khung hình trước hành động. Hành động đã nổ, phép xác minh chạy trước khi màn hình đổi, và nó đọc trạng thái cũ. Thêm một Wait để lắng giữa hai node — và cho nó một Reason, để sáu tháng sau bạn còn biết vì sao có con số đó.
Test Node chạy node cô lập; Test Flow chạy nó trong ngữ cảnh. Khi hai cái không khớp thì ngữ cảnh chính là lỗi.
7. Tái hiện theo ý muốn
Một lỗi chập chờn mà bạn không kích được là lỗi bạn không sửa được. Dùng Practice App để buộc đúng trạng thái:
dashboard.html?popup=1— popup có ở đódashboard.html— không có?gold=0— nhánh không đủ?gap=40— một khoảng kéo khác
Ghim trạng thái biến "nó thỉnh thoảng hỏng" thành một phép thử bạn chạy được hai lần.
Danh sách kiểm
- Đã tra mã lỗi trong Mã lỗi
- Đã xác định node cuối cùng chạy — và đã tự hỏi nó là thủ phạm hay chỉ là vị trí
- Đã kiểm route bị hỏng có phải chỉ đơn giản là chưa nối
- Đã xem khung Run Evidence trước lúc hỏng
- Đã chạy Test Node trên node nghi vấn và đọc con số thật
- Đã xác nhận nguồn của node nằm phía trên trên đường nó thực sự đi
- Đã tái hiện bằng giá trị Practice App đã ghim
Trang liên quan
- Mã lỗi — mọi mã, kèm việc cần làm
- Test và Validate — Validate so với Test Node so với Test Flow
- Retry và thất bại — khi đã biết cái gì vỡ, chọn đúng công cụ
- Mô hình thực thi — runtime đang làm gì lúc nó dừng