亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 利用PyAutoGUI快速構(gòu)建自動化操作腳本

 更新時間:2021年05月31日 09:36:21   作者:大奎  
我們經(jīng)常遇到需要進行大量重復(fù)操作的時候,比如:網(wǎng)頁上填表,對 web 版本 OA 進行操作,自動化測試或者給新系統(tǒng)首次添加數(shù)據(jù)等,今天就利用PyAutoGUI構(gòu)建自動化操作腳本完成這些重復(fù)的需求

一、背景

大家好,我是安果!

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

這些操作的特點往往是:數(shù)據(jù)同構(gòu),大多是已經(jīng)有了的結(jié)構(gòu)化數(shù)據(jù);操作比較呆板,都是同一個流程的點擊、輸入;數(shù)據(jù)量大,極大消耗操作人精力

那么能不能自動化呢?

二、自動化的方案

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

曾經(jīng)多次遇到要求一條條手動輸入舊數(shù)據(jù)的系統(tǒng)升級活動。

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

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

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

三、思路和知識點

現(xiàn)在來說一下基本思路與相關(guān)知識點

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

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

四、操作步驟

4.1 初識 PyAutoGUI

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

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

import pyautogui as pag

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

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

4.2 坐標(biāo)系

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

引申一下,當(dāng)知道界面上每個按鈕的位置時,點擊這些點,就是執(zhí)行相應(yīng)的操作了。

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

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

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) 

運行以上程序,移動鼠標(biāo)到各個按鈕上,就可以看到相應(yīng)的坐標(biāo)。

4.3 點擊

PyAutoGUI 的點擊很簡單:

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

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

寫如下程序,來進行任務(wù)、時間和新建按鈕之間的跳轉(zhuǎn)。

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')。

至于漢字,稍微復(fù)雜點。

4.5 漢字輸入

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

import pyperclip 

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

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

4.6 集成起來

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

import pyautogui as pag
import pyperclip

pag.PAUSE = 1.5
pag.FAILSAFE = True

to = ['測試任務(wù)1','測試任務(wù)2','測試任務(wù)3','測試任務(wù)4','測試任務(wù)5',\
      '測試任務(wù)6','測試任務(wù)7','測試任務(wù)8','測試任務(wù)9','測試任務(wù)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)

以上程序,根據(jù) to 列表內(nèi)容,把操作分解為點擊和粘貼,實現(xiàn)了自動化操作的目的。大部分編碼都很好理解,能跟鼠標(biāo)操作一一對應(yīng)起來??赡艽嬖陔y度的是數(shù)據(jù)源的問題,總不能把所有數(shù)據(jù)都寫入程序吧?

五、數(shù)據(jù)源

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

假設(shè)現(xiàn)在有了 csv 格式數(shù)據(jù)源 data.csv ,需要這樣操作。

to = []

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

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

以上代碼比較簡單,把 csv 中存成的數(shù)據(jù)存儲到 to 這個數(shù)組里,每行數(shù)據(jù)都是一個元組,調(diào)用的時候,如4.6部分代碼所示,使用 for 循環(huán)加上元組下標(biāo)即可。

六、總結(jié)

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

以上就是python 利用PyAutoGUI快速構(gòu)建自動化操作腳本的詳細(xì)內(nèi)容,更多關(guān)于python 用PyAutoGUI構(gòu)建自動化操作腳本的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django對接支付寶實現(xiàn)支付寶充值金幣功能示例

    Django對接支付寶實現(xiàn)支付寶充值金幣功能示例

    今天小編就為大家分享一篇Django對接支付寶實現(xiàn)支付寶充值金幣功能示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • pandas讀取中文xlsx文件出現(xiàn)的問題

    pandas讀取中文xlsx文件出現(xiàn)的問題

    這篇文章主要介紹了pandas讀取中文xlsx文件出現(xiàn)的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • pytorch中的nn.Unfold()函數(shù)和fold()函數(shù)解讀

    pytorch中的nn.Unfold()函數(shù)和fold()函數(shù)解讀

    這篇文章主要介紹了pytorch中的nn.Unfold()函數(shù)和fold()函數(shù)用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python Matplotlib繪制箱型圖(箱線圖)boxplot的方法詳解

    Python Matplotlib繪制箱型圖(箱線圖)boxplot的方法詳解

    箱線圖(箱型圖)主要作用是發(fā)現(xiàn)數(shù)據(jù)內(nèi)部整體的分布分散情況,包括上下限、各分位數(shù)、異常值等,本文為大家整理了Matplotlib繪制箱型圖的所以方法,希望對大家有所幫助
    2023-05-05
  • 詳解Python中dbm模塊和shelve模塊的使用

    詳解Python中dbm模塊和shelve模塊的使用

    這篇文章主要為大家詳細(xì)介紹了Python中dbm模塊和shelve模塊的具體用法,文中的示例代碼簡潔易懂,對我們深入學(xué)習(xí)Python有一定的幫助,需要的可以參考下
    2023-10-10
  • Python進階之全面解讀高級特性之切片

    Python進階之全面解讀高級特性之切片

    切片的作用就是截取序列對象,然而,對于非序列對象,我們是否有辦法做到切片操作呢?在使用切片的過程中,有什么要點值得重視,又有什么底層原理值得關(guān)注呢?本文將主要跟大家一起來探討這些內(nèi)容
    2019-02-02
  • python的schedule定時任務(wù)模塊二次封裝方法

    python的schedule定時任務(wù)模塊二次封裝方法

    今天小編就為大家分享一篇python的schedule定時任務(wù)模塊二次封裝方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 最新評論