Sikuli – Thực hiện công việc tự động với độ chính xác cao

Hồi xưa, mỗi lần ra tiệm Net là tôi phải cài đặt một số phần mềm. Quá trình nhàm chán này xảy ra nhiều đến nỗi tôi nhắm mắt cài cũng được. Máu dê nổi lên, à nhầm, máu lười nổi lên, tôi tự hỏi : Tại sao mình không để máy tính tự động làm tất cả các hành động này ? Ý tôi muốn là mỗi lần tôi cắm USB vào máy tính và chạy một tập tin…gì đó, máy tính sẽ tự động cài đặt IDM, sau khi cài xong nó tự động c**ck luôn và tôi chỉ việc ngồi nhìn.

Trước tới giờ, tôi chỉ biết có 2 loại phần mềm có thể giúp tôi làm được chuyện này :

– Loại thứ nhất sẽ ghi lại vị trí của trỏ chuột trên màn hình hoặc ghi lại các phím tắt rồi sau đó thực hiện “y chang” những gì mà nó “học” được -> Loại này là “chuối” nhất bởi vì nó dựa vào tọa độ màn hình, do đó một số máy sẽ chạy đúng, một số máy sẽ chạy loạn xạ. Nếu sử dụng phím tắt thì đỡ hơn nhưng không phải ứng dụng nào cũng hỗ trợ phím tắt.

– Loại thứ hai là điều khiển trực tiếp các đối tượng trong ứng dụng đó với sự trợ giúp của phần mềm AutoIt. Ví dụ bạn muốn chuột tự động bấm vào nút “Next” thì AutoIt sẽ giúp bạn lấy được nút “Next” dựa vào ID của nó (tất cả các thành phần trong một ứng dụng Windows đều có một ID duy nhất), sau đó bạn sẽ truyền lệnh “bấm” cho cái nút Next. Kết quả là nút Next được bấm trong khi bạn không hề đụng tay đến con chuột. Loại này yêu cầu bạn phải biết một chút về lập trình căn bản nhưng bù lại kết quả rất khả quan và chạy được trên nhiều máy tính khác nhau.

Hôm nay, tôi giới thiệu loại thứ ba và cũng là loại “độc” nhất : tìm và thực hiện hành động dựa vào hình ảnh của đối tượng. Ví dụ : tôi muốn trỏ chuột tự động bấm vào nút “Next” thì tôi chỉ việc truyền vào hành động “Click” tấm hình của nút Next ! :v_wassat:

Sikuli, một phần mềm miễn phí, sẽ giúp bạn làm được chuyện này.

Cách sử dụng phần mềm :

1. Ở cột bên tay trái, hãy bấm chọn một trong các hành động được định nghĩa sẵn. Ví dụ như là hành động bấm chuột trái (click), bấm chuột phải (rightClick), đợi (wait)….
2. Sau khi bạn chọn xong hành động, ngay lập tức Sikuli sẽ chuyển sang chế độ chụp ảnh màn hình để bạn chụp đối tượng cần được thực hiện hành động.

Vậy là xong. Vấn đề ở đây là bạn phải đảm bảo rằng tấm hình (hay nói cách khác là dấu hiệu nhận biết) mà bạn chụp sẽ không bị thay đổi khi chạy ở các máy khác hoặc ngay chính máy tính của bạn. Lưu ý rằng tọa độ click chuột là tâm của tấm hình mà bạn chụp.

Ví dụ tôi muốn tự động mở Firefox và truy cập vào anhhangxomonline.net thì toàn bộ hành động sẽ như hình sau :

Sikuli - Thực hiện công việc tự động với độ chính xác cao

Theo như mô tả trong hình thì bạn có thể thấy thứ tự các bước :
– Tìm trên màn hình biểu tượng của firefox và nhấp đúp chuột vào đó.
– Đợi trong vòng 20 giây hoặc cho đến khi firefox khởi động xong. Dấu hiệu nhận biết chính là mấy cái icon ở cuối thanh addresss.
– Bấm vào thanh address. Dấu hiệu nhận biết thanh address chính là 3 cái icon tương tự ở bên trên. Để khỏi bấm chuột nhầm vào các icon thì tôi chụp một tấm hình hơi dài sao cho tâm của tấm hình không đụng đến các icon.
– “Dán” đoạn text “anhhangxomonline.net” vào thanh address.
– Bấm vào biểu tượng nút “Go” trên thanh address.

Một phần quan trọng trong chuỗi hành động chính là đợi (wait). Khi bạn nhấp đúp chuột vào biểu tượng firefox thì bạn phải cho chương trình biết là hãy đợi cho đến khi trên màn hình xuất hiện dấu hiệu này (dấu hiệu chứng tỏ ứng dụng bạn vừa chạy đã khởi động xong). Bạn nên tìm một dấu hiệu chung nhất và duy nhất trên màn hình nếu ứng dụng đó chạy.

Để chạy thử thì bạn bấm nút “Run” trên thanh công cụ. Trong một số trường hợp, bạn không thể sử dụng tính năng tự chụp hình của chương trình thì bạn hãy tự sử dụng công cụ Paint của Windows để chụp và đưa vào chương trình bằng nút lệnh “Insert Image” trên thanh công cụ.

Bạn có thể tải về file project mà tôi tạo để chạy thử trên máy bạn xem có chính xác hay không nhé. Tải về tại đây. Điều kiện để chạy là bạn hãy tạo một shortcut của Firefox trên desktop, khi chương trình chạy, nếu bạn có thể thấy biểu tượng firefox thì chương trình cũng sẽ thấy và chạy được.

Bạn giải nén file tải về, mở Sikuli lên > vào File > Open và chọn thư mục vừa giải nén > bạn sẽ không thấy tập tin nào hiện ra trong thư mục đó nhưng kệ nó, cứ bấm nút Open là được.

Tiếc một điều là Sikuli không (hoặc chưa) biên dịch đoạn mã bạn tạo ra file tự chạy được nên bạn cần phải chạy thông qua chương trình, hơi bất tiện.

7 Comments
  1. Anh hàng xóm có biết cách tạo cái đĩa cài win mà tự cài phần mềm ko…
    Sau khi cài win xong nó tự cài các phần mềm còn lại…
    Cái này e làm đc rồi… Nhưng đang vướng việc các phần mềm khi chạy (mới chạy chưa có desktop hay biểu tượng gì) nó đòi phải click next hay finnish…
    Anh có biết cách làm ko… Viết 1 bài hướng dẫn đi a…
    Dạo này thấy a ít viết nên viết bài kiểu đền bù cho độc giả đi :))

    • Cái vụ tạo đĩa cài win tự cài phần mềm thì nếu a nhớ không lầm thì em có thể sử dụng phần mềm Win7Lite để làm. Còn vụ “Nhưng đang vướng việc các phần mềm khi chạy….” thì a không hiểu ý cho lắm, ai “đòi phải click next hay finish” ?

  2. Bài viết rất hay. Cảm ơn tác giả đã giới thiệu cho mọi người

  3. Dùng win64bit. chịu chết

  4. Anh có thể viết 1 bài hướng dẫn dùng desktop sử dụng hệ điều hành windows7x64 + usb wifi + software nào đó để phát sóng wifi cho mọi người tham khảo được không ? Thực ra search trên Google thì có rất nhiều bài hướng dẫn, nhưng em đã làm thử với rất nhiều software nhưng chưa bao giờ làm được cả. Có lần thì không chạy được, có lần thì phát được sóng wifi, khi em dùng laptop connect, nhập pass rồi thì lại bị limited hoặc là bị báo lỗi “No internet aceess” . Vào các forum và diễn đàn có uy tín để hỏi va tham khảo chỉ nhận được 1 bài hướng dẫn được copy va paste từ 1 forum hoặc diễn đàn khác, mà chắc chán là người hướng dẫn cũng chưa bao giờ thử làm hoặc đã test qua. Hi vọng sẽ có được hướng dẫn tốt hơn từ blog cua anh.

  5. Mình nghe nói Sikuli có thể đánh bài tự động online? Bác có ví dụ ở trang nào không ạ?

Ý kiến phản hồi