校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > python 利用PyAutoGUI快速構建自動化操作腳本

python 利用PyAutoGUI快速構建自動化操作腳本

熱門標簽:開封自動外呼系統怎么收費 電銷機器人的風險 應電話機器人打電話違法嗎 手機網頁嵌入地圖標注位置 開封語音外呼系統代理商 地圖標注線上如何操作 河北防封卡電銷卡 天津電話機器人公司 400電話辦理哪種

一、背景

大家好,我是安果!

我們經常遇到需要進行大量重復操作的時候,比如:網頁上填表,對 web 版本 OA 進行操作,自動化測試或者給新系統首次添加數據等

這些操作的特點往往是:數據同構,大多是已經有了的結構化數據;操作比較呆板,都是同一個流程的點擊、輸入;數據量大,極大消耗操作人精力

那么能不能自動化呢?

二、自動化的方案

如果你在 web 上進行操作, Python 的 Selenium 可以滿足要求。如果需要對 GUI 界面進行操作,你恐怕得試驗下“按鍵精靈”能不能滿足要求。對新系統添加初始數據,SQL 導出導入是最高效的方式,不過可能需要進行一些較復雜的處理。

曾經多次遇到要求一條條手動輸入舊數據的系統升級活動。

但以上都存在一些問題, Selenium 比較復雜,按鍵精靈功能上不太完善, SQL 需要一定的知識基礎

這里推薦一個更好的解決方案:PyAutoGUI 

其實 PyAutoGUI 最主要好處就是比較簡單,應急使用的話可以很快構建一個可用的自動化操作腳本。畢竟,數據處理任務本來就比較急迫,沒有時間使用復雜知識,來構建一個完善的腳本

三、思路和知識點

現在來說一下基本思路與相關知識點

  • PyAutoGUI 就是模擬鍵盤、鼠標在界面上進行操作。
  • 這里只使用它的 click 功能來模擬鼠標點擊。
  • 為了獲取需要點擊的位置,設計了一個鼠標坐標獲取的程序。
  • ASCII 碼的輸入比較簡單。再解決漢字輸入問題,就使得系統基本可用了。

本文以在 web 界面批量新增數據記錄為例,講解如何自動化操作。這個例子只是演示之用,非常簡單,大家自行理解、遷移。

四、操作步驟

4.1 初識 PyAutoGUI

簡單地說, PyAutoGUI 就是模擬鍵盤、鼠標在界面上進行操作的包。安裝時直接使用如下語句:pip install pyautogui即可。

編寫一個簡單的測試程序:

import pyautogui as pag

pag.PAUSE = 1.5
pag.click(63,191) 

以上程序導入庫,定義了每步驟的暫停時間 1.5 秒(用來留給操作時間),然后在屏幕左起 63 像素,上起 191 像素這個點上點擊了鼠標。

4.2 坐標系

PyAutoGUI 默認的坐標系從屏幕左上角開始,x 軸向右增大,y 軸向下增大。所以顯示器上每個點都有自己的位置。

引申一下,當知道界面上每個按鈕的位置時,點擊這些點,就是執行相應的操作了。

當然,這一切的前提是界面不變。大多數應用的界面、按鈕位置不會變來變去。如果你有這方面需求,可以參考下 locateOnScreen() 函數。這個函數根據你提供的圖片,在屏幕上找到像素匹配的地方。這樣就不怕按鈕動來動去了。

為了獲取屏幕的坐標系,寫了一個簡單的程序,用來獲取鼠標在屏幕上的坐標。大家可以自行下載運行。

import pyautogui as pag 
import os 

try:
    while True:
        os.system('cls')
        a = '%4d,%4d'%pag.position()
        print(a)
except Exception as e:
    print(e) 

運行以上程序,移動鼠標到各個按鈕上,就可以看到相應的坐標。

4.3 點擊

PyAutoGUI 的點擊很簡單:

pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0)

其中x,y是坐標,clicks 是點擊次數,interval 是點擊間隔,button 指代三個鼠標按鈕的哪一個,duiation 是點擊之間的間隔。

寫如下程序,來進行任務、時間和新建按鈕之間的跳轉。

pag.click(63,191)
pag.click(328,191)
pag.click(384,461)
pag.click(374,191)

4.4 輸入

輸入 ASCII 字符和鍵盤擊鍵、熱鍵分別如下:

  • 輸入 ASCII 字符串是typewrite(message='test message.',interval=0.5)
  • 退出鍵是press('esc')
  • 按下是KeyDown('ctrl')
  • 松開是KeyUp('ctrl')
  • 組合鍵是hotkey('ctrl','v')。

至于漢字,稍微復雜點。

4.5 漢字輸入

涉及漢字,無法用 ASCII 方案解決,需要導入包 pyperclip ,這個包封裝了系統剪貼板,大家知道怎么回事了吧。

import pyperclip 

#以下讀入內容,就是把內容存入剪貼板。
pyperclip.copy('需要輸入的漢字')
#以下輸出內容,就是粘貼。
pag.hotkey('ctrl','v')

其實就是用 pyperclip 模擬拷貝,用熱鍵 Ctrl+v 粘貼,實現了非 ASCII 字符的輸入。

4.6 集成起來

下面,把整個程序集成起來看:

import pyautogui as pag
import pyperclip

pag.PAUSE = 1.5
pag.FAILSAFE = True

to = ['測試任務1','測試任務2','測試任務3','測試任務4','測試任務5',\

      '測試任務6','測試任務7','測試任務8','測試任務9','測試任務10']

for t in to:
    pag.click(63,191)
    pyperclip.copy(t)
    pag.hotkey('ctrl','v')
    pag.click(328,191)
    pag.click(384,461)
    pag.click(374,191)

以上程序,根據 to 列表內容,把操作分解為點擊和粘貼,實現了自動化操作的目的。大部分編碼都很好理解,能跟鼠標操作一一對應起來。可能存在難度的是數據源的問題,總不能把所有數據都寫入程序吧?

五、數據源

相較于復雜的現實數據源,最好的方式就是把數據轉成 csv 文件。這樣許多 Excel 都可以另存成這個文件,其本身又是基于文本的,可讀可寫,比較方便。其他諸如 SQL 數據庫、 XML 數據也可以導出轉換為 csv 文件。

假設現在有了 csv 格式數據源 data.csv ,需要這樣操作。

to = []

with open('data.csv')as f:
    lines = f.readlines()

for line in lines:
    to.append(tuple(line.split(',')))

以上代碼比較簡單,把 csv 中存成的數據存儲到 to 這個數組里,每行數據都是一個元組,調用的時候,如4.6部分代碼所示,使用 for 循環加上元組下標即可。

六、總結

本文使用 PyAutoGUI 包,對各種鼠標點擊、輸入之類的機械重復操作進行自動執行,可大幅提高工作效率。這里只使用了 click 功能和 pyperclip 包的 copy 功能。主要是為了簡化編程,讓大家在緊張和繁瑣的操作中,快速編寫一個自動化執行的小腳本。

以上就是python 利用PyAutoGUI快速構建自動化操作腳本的詳細內容,更多關于python 用PyAutoGUI構建自動化操作腳本的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Python腳本實現自動登錄校園網
  • python自動化運維之Telnetlib的具體使用
  • 還在手動蓋樓抽獎?教你用Python實現自動評論蓋樓抽獎(一)
  • Python 如何實現文件自動去重
  • Python爬蟲之自動爬取某車之家各車銷售數據
  • python趣味挑戰之爬取天氣與微博熱搜并自動發給微信好友
  • Python實現智慧校園自動評教全新版

標簽:山東 蘭州 駐馬店 江蘇 成都 六盤水 宿遷 常州

巨人網絡通訊聲明:本文標題《python 利用PyAutoGUI快速構建自動化操作腳本》,本文關鍵詞  python,利用,PyAutoGUI,快速,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python 利用PyAutoGUI快速構建自動化操作腳本》相關的同類信息!
  • 本頁收集關于python 利用PyAutoGUI快速構建自動化操作腳本的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 锦屏县| 唐河县| 沙坪坝区| 通榆县| 红河县| 天峻县| 田阳县| 岗巴县| 日土县| 屏南县| 丰都县| 康平县| 都安| 孟连| 彰武县| 陆川县| 全椒县| 黄浦区| 甘肃省| 葫芦岛市| 临江市| 安多县| 福鼎市| 永宁县| 长岭县| 通州区| 枣阳市| 铁岭市| 萍乡市| 黔西| 明光市| 衡阳市| 内江市| 蒙山县| 三亚市| 安泽县| 个旧市| 汝南县| 长岭县| 平山县| 若尔盖县|