Skip to content

Tự động click chuột bằng Python

Image title

Nếu mình cần điều khiển chuột trong khi lại bận tay hoặc phân tâm việc khác thì nên ứng phó bằng cách nào? Nếu những thao tác chuột cứ lặp đi lặp lại quá đơn điệu thì mình nên làm sao cho đỡ chán và hiệu quả hơn?

Có ít nhất hai phương tiện để giải quyết.



Đó là, hoặc AutoIT cho truyền thống, hoặc Python cho đúng trend.

Khái quát

AutoIt v3 là ngôn ngữ kịch bản (scripting language, có thể hiểu là thiên về thông dịch hơn biên dịch) tương tự như BASIC, dùng để tự động hóa các thao tác trên Windows.

Tương ứng như vậy trong Python, ta sử dụng PyAutoGUI, là thư viện cho phép điều khiển chuột và bàn phím cũng như thực hiện những thao tác tự động khác.

Cài đặt

Tải tập tin cài đặt tại https://www.autoitscript.com/site/autoit/downloads/

Cài đặt thư viện PyAutoGUI bằng lệnh

pip install pyautogui

Khai báo thư viện

Trong Python, ngoài thư viện PyAutoGUI, ta khai báo thêm thư viện time để dùng hàm ngưng đọng thời gian sleep().

Ngược lại trong AutoIT, ta sử dụng hàm có sẵn luôn mà không cần khai báo gì thêm.

import pyautogui as ag
import time

Khai báo biến

Các biến được sử dụng gồm:

  • Tọa độ xy của vị trí click chuột
  • Số lần click chuột click_number
  • Thời gian tạm ngừng giữa hai lần click.

    Trong Python, hàm sleep() tính bằng giây; còn trong AutoIT, hàm Sleep() tính theo milli-giây.

1
2
3
4
5
6
7
8
9
; Position of mouse click
Local $x = 1200
Local $y = 640

; Interval between clicks in milliseconds
Local $clickInterval = 2000

; Number of clicks
Local $clickNumber = 3
    # Position of mouse click
    x = 2500
    y = 1280

    # Number of clicks
    click_number = 57

    # Interval between clicks in seconds
    click_interval = 2

Gọi hàm click tự động

Trong Python, ta giả vờ xử lý cồng kềnh hơn bằng try ... except.

4
5
6
7
8
9
def auto_click(x_pos, y_pos):
    try:
        ag.click(x_pos, y_pos)
        print(f'Clicked at position ({x_pos}, {y_pos})')
    except Exception as e:
        print(f'Error: {e}')

Dùng vòng lặp để chạy hàm click tự động. Mỗi lần click, in ra console thông báo về vị trí click.

For $i = 1 To $clickNumber step 1
    MouseClick("left", $x, $y)
    ConsoleWrite('Clicked at position (' & $x & ', ' & $y & ')' & @CRLF)
    Sleep($clickInterval)
Next
    for i in range(click_number):
        auto_click(x, y)
        time.sleep(2)

Một vài khác biệt

AutoIT Python
Đơn vị thời gian milli-giây giây
Tọa độ xy Theo kích thước 100% của Display trong Settings Theo thực tế của màn hình hiện hành
Con trỏ chuột Nhìn thấy được chuột di chuyển trên màn hình Chỉ thấy biến mất rồi xuất hiện ở vị trí mới

Toàn bộ chương trình¶

Code đầy đủ được đặt tại:

  1. AutoIT

  2. Python