Chuyển tới nội dung chính

Giữ flow chạy được khi app đổi

Automation dựng trên hình dạng màn hình thì có một phụ thuộc thường trực vào hình dạng màn hình đó. Khi app bạn tự động hóa ra bản cập nhật — hoặc khi bạn đổi độ phân giải giả lập — một số thứ vỡ và một số thì không. Biết cái nào là cái nào giúp bạn khỏi dựng lại thứ vốn không hỏng.

Thứ gì vỡ, theo thứ tự khả năng

ThứSống sót qua thay đổi UI?Vì sao
Ảnh templateKhông — vỡ đầu tiênKhớp dựa trên pixel. Một nút được vẽ lại là một ảnh khác
Tọa độ gõ tayKhôngKhông có gì neo nó vào thứ bạn thực sự nhắm
Region đã vẽThường là cóLưu theo phần trăm màn hình, nên sống qua thay đổi độ phân giải — nhưng không sống qua việc phần tử bị dịch chỗ
Kiểu nội dung OCRThường là cóNumber vẫn là Number dù font đổi
Cấu trúc flow, biến, lời gọi sub flowGắn theo id và theo tên, không theo hình dạng

Hệ quả thực tế: một bản cập nhật UI thường là vấn đề template, không phải vấn đề flow. Đừng dựng lại đồ thị.

Sửa theo thứ tự này

1. Xác nhận đúng là thứ bạn nghĩ

Chạy Test Node trên phép phát hiện bị hỏng và đọc độ tin cậy thật. Việc này phân biệt hai trường hợp trông y hệt nhau:

  • Độ tin cậy thấp hơn ngưỡng rất nhiều → template không còn khớp. Chụp lại.
  • Độ tin cậy ổn nhưng cú chạm trượt → template khớp, vị trí đã dịch. Kiểm search region.

Đoán ngưỡng mà không có con số này chính là cách một template đang tốt bị bỏ đi.

2. Chụp lại template thật sát

Cắt đúng phần đặc trưng — cái glyph, cái icon, cái nhãn. Phần nền bao quanh nó chính là thứ đổi khi app được vẽ lại, và mỗi pixel nền bạn đưa vào là một pixel có thể làm bạn vỡ.

TEMPLATE_QUALITY_TOO_LOW nghĩa là mẩu cắt quá nhỏ hoặc quá trơn để khớp đáng tin; hãy cắt to hơn một chút, hoặc chọn một phần tử đặc trưng hơn.

3. Kiểm lại search region, không chỉ template

Nếu phần tử đã dịch chỗ thì template vẫn ổn và search region mới là chỗ sai. Hãy vẽ region trên Live Preview thay vì gõ tọa độ — và lưu ý region còn làm việc khớp nhanh hơn, nên đây là cách tăng tốc lúc chạy rẻ nhất hiện có.

4. Chỉ sau đó mới chạm vào ngưỡng

Hạ ngưỡng để một template tệ đậu là mua lấy một false positive về sau. Sửa template trước; điều chỉnh ngưỡng khi Test Node cho thấy một cú khớp thật sự tốt nhưng nằm sát dưới vạch.

Thay đổi độ phân giải là một kiểu vỡ riêng

Nếu bạn đổi độ phân giải hay zoom của giả lập, template vỡ hàng loạt — khớp dựa trên pixel. Hai lựa chọn:

  • Chụp lại ở độ phân giải mới. Đáng tin, và là thứ phần lớn người nên làm.
  • Bật phát hiện đa tỉ lệ trong feature gate của flow. Tốn hơn mỗi lần khớp; hữu dụng khi một flow phải phục vụ các instance khác cỡ.

Cũng kiểm queue: một mục lưu cặp độ phân giải flow/instance bạn đã xác nhận. Đổi một bên thì cái "Add anyway" cũ không còn áp — đó là QUEUE_RESOLUTION_MISMATCH, và đó là hệ thống từ chối cho rằng bạn vẫn muốn thế.

Giữ mọi instance ở đúng baseline 1280×720 · DPI 240 · 30 FPS là thứ làm một bộ template dùng được ở mọi nơi. Xem Cấu hình MuMu.

Dựng sao cho lần đổi tới đỡ tốn

Đây là các quyết định thiết kế biến một lần vỡ thành một cái nhún vai.

Đưa mọi hình chữ nhật tái dùng vào Region Library. Khi đó một phần tử dịch chỗ là một lần sửa, không phải năm. Năm node mỗi cái tự vẽ lại cùng hình chữ nhật là năm lần sửa riêng.

Đừng bao giờ tin một màn hình bạn chưa xác minh. Một flow hành động rồi đi tiếp không thể cho bạn biết app đã đổi; nó chỉ âm thầm làm sai. Hành động → lắng → xác minh. Xem Bài 02.

Hãy có một quy trình "về màn hình đã biết". Một Sub Flow nhấn BACK vài lần rồi xác nhận đã về nhà làm mọi flow khác an toàn khi bắt đầu. Khi app đổi, bạn sửa đúng một quy trình đó thay vì sửa nước mở đầu của từng flow — xem Bài 09.

Ưu tiên phát hiện hơn vị trí ghi nhớ. Trỏ nguồn tọa độ của một Click vào một node Find Image thay vì một region cố định. Khi đó cú chạm đi theo phần tử khi nó dịch, và bạn không phải đổi gì.

Cho mọi route thất bại một chỗ trung thực để đi. "Cái nút không có ở đó" nên tới được một Stop có thông điệp, không phải rơi khỏi cuối đồ thị.

Sau khi app cập nhật: một lượt 10 phút

  1. Chạy từng flow một lần bằng Test Flow trên một instance thật.
  2. Với mỗi lần hỏng, chạy Test Node trên node được báo và đọc độ tin cậy.
  3. Chụp lại những template đã tụt; để yên những cái không tụt.
  4. Kiểm lại search region cho bất cứ gì đã dịch chỗ.
  5. Chạy lại. Sửa quy trình "về màn hình đã biết" trước nếu nước mở đầu vỡ — mọi thứ phía sau phụ thuộc vào nó.
  6. Chỉ sau đó mới xem tới ngưỡng.

Thứ quan trọng là pixel có đổi hay không, không phải số phiên bản của app nói gì.

Trang liên quan