Tự động hoá ứng dụng Windows (Desktop Mode)
Microbe Studio điều khiển hai loại mục tiêu: instance giả lập Android, và — trong Desktop Mode — các ứng dụng Windows của chính chiếc PC này. Mọi thứ bạn đã biết đều mang theo được: cùng flow editor, cùng bộ node, cùng hàng đợi và lịch. Thứ thay đổi là cái mà flow tác động lên, kèm một hệ quả cần nói thẳng: flow desktop di chuyển chuột và bàn phím của chính bạn, nên trang này nói về việc giữ quyền kiểm soát nhiều ngang với việc dựng flow.
Bạn không cần giả lập để dùng Desktop Mode, và không cần Desktop Mode để dùng giả lập — đó là hai workspace tách biệt.
Bật lên
- Desktop Mode được cấp phép qua capability Windows Mode trong License Package của bạn. Nếu gói chưa có, ứng dụng sẽ báo và ở lại chế độ Giả lập — kiểm tra gói của bạn trên website.
- Trong ứng dụng: Settings → Môi trường chạy → Desktop.
Chuyển chế độ là đổi cả workspace, không phải một bộ lọc: dashboard, danh sách flow, hàng đợi và lịch giờ chỉ hiển thị automation desktop. Flow, hàng đợi và lịch phía giả lập còn nguyên — đổi lại bất cứ lúc nào.
Flow desktop đầu tiên của bạn
Vòng lặp vẫn là thứ khoá học Automation dạy — hành động, rồi xác minh — nên nếu đã dựng flow giả lập, bạn đã biết cách dựng flow desktop.
- Tạo một flow trong workspace Desktop. Toolbox là bộ quen thuộc, thêm Mở ứng dụng và bớt Zoom (cửa sổ không có cử chỉ chụm ngón tay).
- Mở đầu bằng Mở ứng dụng trỏ vào chương trình bạn tự động hoá. Cửa sổ đã mở sẵn thì node chỉ việc tìm thấy; chưa mở thì nó khởi chạy chương trình và chờ cửa sổ — nên cùng một flow chạy được cả lúc máy nguội lẫn lúc app đã bật.
- Hành động và xác minh hệt như trên giả lập: Click, Find Image, Read Text. Bắt template và vùng ngay từ live preview của cửa sổ thật.
- Test Flow chạy nó từ đầu tới cuối, với đúng bộ công cụ kiểm thử quen thuộc.
- Chạy thật từ Desktop Dashboard — hoặc xếp hàng đợi, hoặc đưa lên lịch. Một desktop, mỗi lúc một flow: run desktop chạy tuần tự, workspace này không có đội hình instance.
Node tác động lên cái gì
Trên giả lập, mục tiêu của node là hiển nhiên — màn hình của instance. Desktop có nhiều cửa sổ, nên mỗi node hành động hay đọc màn hình mang câu trả lời riêng, trong nhóm Execution Context của property panel:
| Mục tiêu | Nghĩa |
|---|---|
| Cửa sổ đang focus (mặc định) | Cửa sổ nào đang có focus đúng khoảnh khắc node chạy |
| Cửa sổ cụ thể | Một cửa sổ, khớp theo mô tả — hoạt động cả khi người dùng đang focus thứ khác |
| Desktop | Toàn bộ desktop, trải khắp mọi màn hình |
| Màn hình | Một màn hình (hoặc "màn hình chính, dù là cái nào") |
| Vùng | Một hình chữ nhật, neo theo cửa sổ, màn hình, hoặc desktop |
Lựa chọn là theo từng node, vì việc desktop thật sự là di chuyển giữa các ứng dụng: đọc mã ở cửa sổ này, gõ vào cửa sổ kia, rồi kiểm thông báo trên toàn màn hình.
Cửa sổ cụ thể được mô tả, không bao giờ ghi nhớ theo handle — một mẩu tiêu đề (không phân biệt hoa thường), tên process, file thực thi, window class, hoặc một tên gợi nhớ bạn tự đặt. Chỉ những trường bạn điền mới phải khớp. Hộp thoại Chọn cửa sổ liệt kê những gì đang chạy, và nút Kiểm tra khớp cho biết mô tả hiện khớp mấy cửa sổ — con số bạn cần là đúng một, vì lúc chạy một mô tả nhập nhằng sẽ bị từ chối chứ không đoán bừa: hai cửa sổ Chrome không thay thế được cho nhau, và âm thầm điều khiển nhầm cái sẽ sinh ra một lỗi không ai tái hiện nổi. Xem khi có chuyện bên dưới.
Khi flow chạy — giữ quyền kiểm soát
Run desktop dùng chuột và bàn phím thật, nên sản phẩm không bao giờ giấu việc đó đang diễn ra:
- Một lớp phủ nhỏ hiển thị trạng thái run. Khi flow đang điều khiển, lớp phủ cho click xuyên qua hoàn toàn — không bao giờ nuốt cú click hay cướp foreground. Nó chỉ nhận tương tác khi run tạm dừng hoặc lỗi. Bạn có thể đặt luôn hiện hoặc không hiện trong Settings → Windows; ẩn lớp phủ không thay đổi gì cách flow chạy.
- Biểu tượng khay phản chiếu cùng trạng thái, và thông báo luôn bắn ra khi run tạm dừng — cái đó không tắt được, vì rủi ro thật là một run bị pause mà không ai hay.
- Lấy lại máy bằng cách cứ dùng nó. Di chuột hoặc gõ phím, run tạm dừng ở ranh giới node kế tiếp (mặc định bật, Settings → Windows). Mọi timeout và deadline trong flow đóng băng khi pause — không có gì "hết hạn" chỉ vì bạn trả lời một email giữa chừng.
- Tiếp tục bằng nút trên lớp phủ, menu khay, hoặc phím tắt toàn cục — Ctrl+Alt+S tạm dừng, Ctrl+Alt+R tiếp tục, từ bất kỳ cửa sổ nào. Khi tiếp tục có 3 giây đếm ngược trước lúc input bắt đầu lại, nên con chuột không bao giờ bị giật khỏi tay bạn.
- Run theo lịch bị pause không chờ mãi trừ khi bạn muốn thế: sau số phút bạn cấu hình nó dừng hẳn sạch sẽ (đặt 0 để chờ vô hạn).
Cửa sổ, kích thước, và việc đọc màn hình
Hai cơ chế đáng biết, vì chúng giải thích những gì bạn sẽ thấy:
- Cửa sổ được đưa về đúng hình dạng flow được vẽ trên đó. Template và điểm click là pixel so với một hình dạng cửa sổ; nên trước khi hành động, run khôi phục trạng thái và kích thước của mục tiêu về đúng lúc flow được soạn, rồi đo lại. Ứng dụng từ chối kích thước thì run bị từ chối kèm cả hai con số — thành công ở toạ độ sai còn tệ hơn. Kéo cửa sổ sang màn hình có tỉ lệ hiển thị khác làm đổi kích thước pixel của mọi thứ bên trong; điều đó được báo cáo, không bao giờ bị "sửa" âm thầm.
- Đọc và hành động có nhu cầu khác nhau. Với đa số cửa sổ, khung hình được đọc bằng phương pháp hoạt động cả khi cửa sổ bị cái khác che. Một số ứng dụng (game và các cửa sổ tăng tốc phần cứng) chỉ đọc được từ chính màn hình, đòi cửa sổ phải nổi trên cùng — panel cửa sổ cho biết mỗi cửa sổ được phương pháp nào, nên "preview bỗng đen khi tôi che nó" là điều đoán trước được, không phải bí ẩn. Còn input, trong mọi trường hợp, đều đưa cửa sổ mục tiêu lên foreground trước.
Desktop Mode và giả lập, đặt cạnh nhau
| Workspace giả lập | Workspace desktop | |
|---|---|---|
| Mục tiêu | Instance MuMu, nhiều cái song song | Chiếc PC này — một desktop, mỗi lúc một flow |
| Toolbox | Bộ chuẩn, có Zoom | Bộ chuẩn, có Mở ứng dụng; không có Zoom |
| Key Press | Phím Android (BACK, HOME, …) | Phím PC, và giữ được Ctrl / Alt / Shift / Win cho phím tắt |
| Input Text | Bộ ký tự giả lập chấp nhận | Unicode đầy đủ, độc lập với layout bàn phím |
| Input đi qua | ADB / kênh của giả lập | API input của Windows — ứng dụng đọc thẳng thiết bị nhập (vài game) có thể không nhận thấy |
| Con chuột của bạn khi chạy | Tự do — run diễn ra bên trong giả lập | Đang được run sử dụng — tạm dừng bất cứ lúc nào bằng cách di nó |
Khi một run desktop hỏng
Trình tự gỡ lỗi không đổi. Các mã riêng của chế độ này, theo thứ tự bạn hay gặp:
| Mã | Tình huống |
|---|---|
APP_LAUNCH_FAILED | Mở ứng dụng không tạo ra được cửa sổ — kiểm đường dẫn chương trình đã ghi còn tồn tại không |
WINDOW_NOT_FOUND | Không gì khớp mô tả cửa sổ của node — app chưa chạy, hoặc mô tả quá hẹp |
WINDOW_AMBIGUOUS | Mô tả khớp nhiều hơn một cửa sổ — thu hẹp lại; run từ chối đoán |
TARGET_SURFACE_UNAVAILABLE | Cửa sổ đang minimize, hoặc màn hình đã bị rút |
TARGET_CONTEXT_INVALID | Execution Context của node chưa hoàn chỉnh — mở node và điền nốt phần Target |
Cả năm mã được liệt kê cùng những mã còn lại trong Mã lỗi.
Chia sẻ và bán flow desktop
Flow desktop xuất, phát hành và bán y hệt flow giả lập — xem Sở hữu trí tuệ của Flow. Store đọc mục tiêu từ chính gói được tải lên và gắn nhãn các flow nhắm Windows, nên người mua luôn biết flow dành cho chế độ nào trước khi trả tiền.