攝影或3C

Python:如何使用 pyautogui 進行自動點擊?

PyAutoGUI 是一個 Python 模塊,提供了一組簡單的函數來自動化鼠標和鍵盤操作。它是跨平台的,可以在 Windows、macOS 和 Linux 上運行。PyAutoGUI 可以用來自動完成許多類型的悶重任務,例如 GUI 測試、遊戲中的自動操作、以及任何需要自動化用戶界面交互的場景。

以下是 PyAutoGUI 的一些基本功能:

  1. 鼠標控制PyAutoGUI 可以模擬鼠標移動、點擊、拖動和滾動等操作。你可以指定鼠標的移動速度和精確座標,以達到精準控制。

  2. 鍵盤控制PyAutoGUI 也能模擬鍵盤輸入,包括按鍵、鍵盤組合、輸入文字等。這對於自動填寫表單或執行鍵盤快捷操作非常有用。

  3. 屏幕截圖和圖像識別PyAutoGUI 允許你進行屏幕截圖,並可以找到屏幕上的圖像,然後基於這些圖像進行鼠標操作。這是通過視覺反饋來自動化程序的一種很有用的方法。

  4. 窗口管理PyAutoGUI 可以獲取螢幕的解析度,以及當前活動窗口的大小和位置,但它的窗口管理功能相對較弱,如果需要更複雜的窗口操作,可能需要其他模塊或工具來協助。

pyautogui.position()
獲取目前滑鼠位置:

import pyautogui

x, y = pyautogui.position()
print(f"The current mouse position is {x}, {y}")

移動到指定位置後
點擊滑鼠左鍵並輸入文字

import pyautogui

# 將滑鼠移動到屏幕的(666, 58)位置
pyautogui.moveTo(666, 58, duration=1)

# 在當前位置進行單擊
pyautogui.click()

# 輸入一段文字
pyautogui.write('https://savingking.com.tw', interval=0.25)

# 按下並釋放回車鍵
pyautogui.press('enter')

滑鼠位置會隨著螢幕解析度的不同而變化。這是因為滑鼠的座標是相對於螢幕解析度來定位的。例如,在一個 1920×1080 的螢幕解析度中,滑鼠的座標(960, 540)會位於螢幕中心。但是如果在一個 1366×768 的解析度中,同樣的座標會超出螢幕範圍,因為它的寬度和高度都沒有那麼大。

這意味著如果你開發了一個基於特定解析度的 GUI 自動化腳本,當運行在不同解析度的螢幕上時,可能會導致腳本無法正常工作。為了解決這個問題,你可以採取以下幾種方法:

  1. 動態計算座標:在腳本運行時先獲取螢幕的解析度,然後根據這個解析度來動態計算滑鼠操作的座標。
  2. 使用相對座標:使用螢幕解析度的百分比來定位滑鼠,這樣無論解析度如何,都會點擊到相對應的位置。
  3. 畫面自適應:設計 GUI 自動化腳本時考慮到不同解析度的適應性,比如使用圖像識別而不是硬編碼的座標。
  4. 使用UI元素識別:使用工具或框架(如SikuliX、Appium等)進行元素識別而不是座標定位。
  5. 限制使用環境:在無法避免的情況下,你可能需要限制你的腳本只在特定解析度下運行,並清楚地告知使用者這一限制。

總之,解析度對於基於座標的 GUI 自動化是一個重要的考量因素,必須在開發自動化腳本時納入考慮。

import pyautogui

# 將鼠標移動到屏幕中央
pyautogui.moveTo(pyautogui.size().width / 2, pyautogui.size().height / 2)

# 執行點擊操作
pyautogui.click()

# 輸入一些文字
pyautogui.write('Hello, world!', interval=0.05)

# 按下並釋放一個快捷鍵組合
pyautogui.hotkey('ctrl', 'c')

# 截取屏幕圖像
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')

# 找到屏幕上的圖像位置並點擊
location = pyautogui.locateCenterOnScreen('example.png')
if location:
    pyautogui.click(location)

推薦hahow線上學習python: https://igrape.net/30afN

Brave瀏覽器輸入網址位置的介面:

圖片檔Google.png:

code:

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 23 18:02:51 2024

@author: SavingKing
"""
import os
import pyautogui

# 設定圖像儲存目錄和文件名
dirname  = r"D:\Python code\PyAutoGui_Feebee"
basename = "Google.png"
path = os.path.join(dirname,basename)
#'D:\\Python code\\PyAutoGui_Feebee\\Google.png'

# 注意在這裡使用 'path' 變量而不是字符串 'path'
# 找到屏幕上的圖像位置
location = pyautogui.locateCenterOnScreen(path, confidence=0.8)
if location:
    x, y = location
    pyautogui.moveTo(x+10, y)  # 移動到圖像位置的右邊一點

    # 執行點擊操作
    pyautogui.click()

    # 輸入網址
    url = "https://savingking.com.tw"
    pyautogui.write(url, interval=0.05)
    # 按下 Enter 
    pyautogui.press('enter')
else:
    print(f"無法找到屏幕上的 '{basename}' 圖像。")


pyautogui.moveTo(x+10, y)
# 移動到圖像位置的右邊一點
如果概略地移動到圖像位置的右邊一點
有問題的話
可以使用
pyautogui.locateOnScreen(path, confidence=0.8)
Out[30]: Box(left=381, top=39, width=83, height=40)

pyautogui.locateCenterOnScreen 函数会返回屏幕上找到的图像的中心坐标。除了这个函数,pyautogui 和它的底层库 pyscreeze 提供了其他函数来定位屏幕上图像的不同部分或者获取图像的更多信息。

以下是一些相关的函数:

  • locateOnScreen(image, **kwargs): 返回图像在屏幕上的位置(左上角X坐标,左上角Y坐标,宽度,高度)。
  • locateAllOnScreen(image, **kwargs): 返回屏幕上所有匹配图像的位置生成器。
  • locate(image, haystackImage, **kwargs): 在一个较大的图像中查找另一个较小图像的位置。

pyautogui 没有提供类似 locateRightOnScreen 这样直接定位图像右边缘的函数。不过,你可以使用 locateOnScreen 函数获取到图像的位置和大小,然后根据这些信息计算出图像的任何边缘的坐标。例如,下面的代码可以帮助你找到图像的右边缘中心的坐标:

region = pyautogui.locateOnScreen(path, confidence=0.8)
if region:
    # region是一个元组:(left, top, width, height)
    left, top, width, height = region
    # 计算右边缘中心的X坐标
    right_center_x = left + width
    # 计算中心的Y坐标
    center_y = top + height / 2
    # 右边缘中心的坐标
    right_center = (right_center_x, center_y)
else:
    print("无法在屏幕上找到图像。")

推薦hahow線上學習python: https://igrape.net/30afN

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡