Bài 01 · Flow đầu tiên
Ba node. Một cú chạm. Mọi thứ còn lại của khóa học đều xây trên những gì ba node này dạy bạn.
Bài toán
Dashboard của Practice App có nút Collect. Bạn muốn giả lập tự chạm vào nó — mà bạn không đụng tay vào gì cả.
Đó chính là automation ở dạng nhỏ nhất có thể: khi tôi chạy flow này, máy thực hiện một hành động trên màn hình.
Bạn sẽ học được
- Flow gồm những gì: node, port, edge.
- Một lần chạy đi từ Start đến Stop như thế nào.
- Cách đặt node, nối dây, lưu và chạy.
- Vì sao mọi flow nên kết thúc ở một Stop tường minh.
Trước khi bắt đầu
- Practice App đang mở trong giả lập tại
dashboard.html. - Instance của bạn hiển thị Online trên Instance Dashboard.
Flow
Và trong trình soạn thảo thật, sau khi Auto Layout:

Dựng flow
- Ở màn hình Flows, chọn Create New Flow. Flow mới mở ra với một node Start sẵn trên canvas — mọi flow đều bắt đầu bằng đúng một Start.
- Từ hộp công cụ bên trái, nhóm Actions, thêm một node Click (Nhấp).
- Đặt tên
1. Tap the Collect button. Đánh số tên node theo thứ tự đọc là thói quen nên tập ngay từ giờ — trên canvas lớn, nó giúp đọc flow trong một cái liếc mắt. - Trong Properties panel của node, đặt đích chạm: vẽ một Click Region ôm sát nút Collect trên Live Preview (chọn Select Directly On Live Preview → Save Region, hoặc gõ tọa độ hình chữ nhật).
- Nhóm Control, thêm một node Stop (Dừng). Đặt Final status là
successvà Message làTapped Collect. - Nối dây: kéo từ port Success của Start sang node Click, rồi từ port Success của Click sang Stop.
- Save, rồi bấm Auto Layout (nút trên toolbar) — để trình soạn thảo tự sắp xếp các thẻ.
Vì sao dùng từng node
| Node | Vai trò | Truyền đi cái gì |
|---|---|---|
| Start | Điểm vào duy nhất. Bản thân nó không làm gì | Quyền điều khiển, qua port Success |
| Click | Hành động duy nhất: chạm một điểm ngẫu nhiên trong vùng bạn vẽ | Quyền điều khiển; output ghi lại vị trí đã chạm |
| Stop | Tuyên bố kết cục của lần chạy | Không gì cả — nó kết thúc lần chạy với success và thông điệp của bạn |
Hai ý tưởng ẩn trong flow bé xíu này:
Port là lối ra, edge là con đường. Node không bao giờ quyết định flow đi đâu — nó chỉ báo mình rời qua port nào. Edge bạn vẽ mới quyết định điều gi đến tiếp theo. Chính sự tách bạch đó cho phép bạn nối lại dây một flow mà không đụng vào thiết lập của bất kỳ node nào.
Click Region chạm một điểm ngẫu nhiên bên trong nó, mỗi lần chạy. Không phải tâm vùng — mỗi lần là một điểm ngẫu nhiên mới, để các lần chạy lặp lại không gõ mãi một pixel. Đó cũng là lý do bạn vẽ vùng ôm sát nút.
Chạy thử
Chọn Run trên flow (hoặc Test Flow trong trình soạn thảo). Runtime sẽ:
- Tạo một session và đặt node hiện tại là Start.
- Start rời qua Success → edge dẫn tới Click của bạn.
- Click chọn một điểm ngẫu nhiên trong vùng, gửi cú chạm, rời qua Success.
- Stop kết thúc lần chạy: trạng thái
success, thông điệpTapped Collect.
Kết quả kỳ vọng: trong giả lập, trang Collect mở ra (nút đó điều hướng sang trang ấy). Nhật ký chạy hiển thị ba node đã thực thi và kết thúc bằng thông điệp của bạn.
Best practices
- Đặt tên node theo ý định, đánh số theo thứ tự —
1. Tap the Collect button, không phảiClick 1. - Vẽ click region ôm sát. Điểm ngẫu nhiên phải luôn rơi trúng nút.
- Luôn kết thúc ở Stop có thông điệp. Thông điệp đó là thứ b ạn sẽ đọc trong nhật ký lúc 2 giờ sáng.
- Auto Layout trước khi chụp ảnh hoặc chia sẻ flow — canvas gọn gàng là canvas đọc được.
Lỗi thường gặp
| Lỗi | Hậu quả | Cách sửa |
|---|---|---|
| Vùng vẽ lỏng quanh nút | Vài lần chạy chạm trượt ra ngoài | Thu hẹp hình chữ nhật |
| Không có Stop — flow "tự hết" | Lần chạy kết thúc bằng TRANSITION_NOT_FOUND thay vì thông điệp của bạn | Nối mọi nhánh về một Stop |
| Kỳ vọng flow đợi màn hình mới | Click trả về ngay khi cú chạm được gửi | Đó là nội dung Bài 02 |
Khắc phục sự cố
Lần chạy thành công nhưng không có gì được chạm.
Trang Practice App có lẽ không phải màn hình đang hiện trong giả lập. Đưa dashboard.html lên trước rồi chạy lại.
Lần chạy kết thúc với TRANSITION_NOT_FOUND.
Một port không có edge đã được đi qua. Kiểm tra Start → Click → Stop nối đủ qua các port Success.
Cú chạm rơi cạnh nút. Vùng của bạn quá to. Vẽ lại ôm đúng cái nút.
Tóm tắt
- Flow là các node (bước) nối bằng edge (đường) giữa các port (lối ra).
- Runtime đi qua từng node một, từ Start đến Stop.
- Click chạm một điểm ngẫu nhiên trong vùng và không đợi màn hình phản ứng.
- Mọi nhánh nên kết thúc ở một Stop nói rõ chuyện gì đã xảy ra.
Tiếp theo
Cú chạm đã ăn — nhưng flow chỉ cho rằng nó ăn. Bài 02 · Chờ và xác minh khiến flow chứng minh màn hình đã thay đổi — thói quen quan trọng bậc nhất trong automation màn hình.
Xem thêm: Click · Stop · Mô hình thực thi