Python RPA自動化機器人模擬鼠標鍵盤
RPA,全稱為Robotic Process Automation,即機器人流程自動化。
我們可以利用RPA技術(shù)將工作中可重復的部分流程化,讓機器替我們完成這一工作。
許多程序并不提供方便的接口,我們難以直接通過腳本來批量完成工作任務。
PyAutoGUl允許我們使用Python腳本來控制鼠標和鍵盤以自動與其他應用程序交互,我們可以用這個庫來記錄我們的鍵鼠操作,從而使得計算機像人一樣去使用那些應用程序,使人們從繁瑣的重復性工作中抽離出來。
我們一起來了解一下PyAutoGUI庫的安裝及其使用方法。
1. PyAutoGUI庫的安裝
1.1 系統(tǒng)環(huán)境
操作系統(tǒng):win10 64位
Python版本:Python 3.7.0及其以上
1.2 安裝參考
1、使用pip進行安裝,pip install pyautogui
使用pip方式安裝PyAutoGUI庫。
#創(chuàng)建虛擬環(huán)境 mkvirtualenv -p python3.10 PythonRPA #進入虛擬環(huán)境 workon PythonRPA pip install pyautogui pip list
2、下載后安裝
手動下載進行安裝,
進入網(wǎng)址:傳送門,點Download files,下載右側(cè)的PyAutoGUI-0.9.38.tar.gz
3、檢測安裝是否成功
python import pyautogui
2.鼠標控制函數(shù)
在日常生活中經(jīng)常使用的鼠標動作,都可以使用PyAutoGUI庫中的函數(shù)來模擬,
那么一起來了解下鼠標坐標的定義及一些鼠標控制函數(shù)。
2.1 屏幕分辨率和鼠標位置
先來了解一下鼠標坐標的定義。
PyAutoGUI會獲取我們的屏幕大小信息,之后以屏幕的左上角為坐標原點,從坐標原點向右為x軸,從零開始遞增;
從坐標原點向下為y軸,從零開始遞增。
最左上角的像素點坐標為(0,0)。
如果屏幕分辨率為1920×1080,則最右下角的像素點將為(1919,1079)(因為坐標從0開始而不是1)
我們可以用函數(shù)獲取屏幕分辨率大小以及鼠標當前坐標:
#屏幕分辨率大小由size()函數(shù)作為兩個整數(shù)的元組返回 pyautogui.size() #鼠標光標的當前X和Y坐標由position()函數(shù)返回 print(pyautogui.position())
此外,也可以通過一些外部軟件獲取鼠標坐標,如微信的截圖功能:
登陸微信后按下 ctrl+a,
鼠標右側(cè)就會展示出當前坐標。
2.2 控制鼠標移動
pyautogui.moveTo([1392,47],duration=1)
此種方式無論鼠標的當前位置在哪,都控制鼠標移動到屏幕坐標軸的(x,y)=(1392,47)的位置上。
pyautogui.moveRel([20,30],duration=1)
而此種方式則先要獲取鼠標的當前位置,然后在此位置的基礎(chǔ)上向右移動20個像素,向下移動30個像素。
而另一個參數(shù)“duration”規(guī)定鼠標移動到目標位置所需要的時間,我們會看到鼠標在規(guī)定時間內(nèi)逐漸移動到目標位置,就像我們真正在手動移動鼠標一樣。
2.3 控制鼠標點擊
我們可以簡單的調(diào)用click()函數(shù)來完成點擊,這樣會直接使鼠標在當前位置單擊鼠標左鍵一次:
pyautogui.click()
如果想要在特定坐標點單擊鼠標,可以用下面的方式,這樣就不用再先行移動鼠標:
pyautogui.click([566,193])
在鼠標點擊中,有一些值得注意的參數(shù):
參數(shù) | 可選值 | 簡介 |
---|---|---|
button | left, right, middle | 決定由鼠標左鍵、右鍵、還是滾輪來執(zhí)行點擊操作 |
clicks | 整數(shù) | 決定鼠標點擊次數(shù) |
interval | 數(shù)字 | 與clicks搭配使用,決定每次鼠標點擊事件的間隔時間 |
我們也可以完成對點擊動作的分解,“mouseDown”即表示按下鼠標的動作,而”mouseUp”表示抬起鼠標的動作。
pyautogui.mouseDown(button='left', x=243, y=637) pyautogui.moveTo([707,669],duration = 1) pyautogui.mouseUp(button='left', x=707, y=669)
另外,其他鼠標點擊事件的控制代碼如下所示,我們可以直接調(diào)用這些函數(shù),以減少大量添加描述參數(shù):
pyautogui.doubleclick() #控制雙擊鼠標左鍵 pyautogui.rightClick() #控制單擊鼠標右鍵 pyautogui.middleclick() #控制單擊鼠標滾輪鍵
2.4 控制鼠標滾動
通過scroll()函數(shù),我們可以模仿鼠標滾輪的滑動。
pyautogui.scroll(num)
其中num的取值范圍是任意整數(shù),num取正數(shù)表示滾輪向上滑動,而取負數(shù)=數(shù)表示滾輪向下滑動。
2.5 控制鼠標拖動
我們還常常需要用鼠標選中一段區(qū)域,這時我們就需要用到控制鼠標拖動功能。
pyautogui.moveTo([237,890],duration = 0.5) pyautogui.dragTo([873,951], duration = 1) pyautogui.moveTo([237,890],duration = 0.5) pyautogui.dragRel([20,30],duration = 1)
此種方式和前面控制鼠標移動的原理相同,共有兩種控制鼠標拖動的方式,
第一種是控制鼠標拖動到[873,951]坐標位置,
第二種是以當前鼠標位置為起點,向右拖動20個像素的距離,向下拖動30個像素的距離。
“duration”參數(shù)依然控制鼠標移動的時間。
“button”等參數(shù)仍然適用在這里。
3. 控制鍵盤
類似的,我們也可以用PyAutoGUI庫來模擬鍵盤輸入。
3.1 控制鍵盤按鍵
pyautogui.press('a') pyautogui.press('space')
代碼輸入?yún)?shù)表示要控制鍵盤按下鍵的鍵值,單獨輸入字母,如’a’,就相當于按下鍵盤上的’a’鍵,一些常用的快捷鍵列舉如下:
按鍵 | 說明 |
---|---|
enter(或return 或 \n) | 回車 |
esc | ESC鍵 |
shiftleft,shiftright | 左右SHIFT鍵 |
altleft, altright | 左右ALT鍵 |
ctrlleft,ctrlright | 左右CTRL鍵 |
tab (t) | TAB鍵 |
backspace, delete | BACKSPACE、DELETE鍵 |
pageup, pagedown | PAGEUP和PAGE DOWN鍵 |
3.2 控制鍵盤輸入
pyautogui.typewrite(string)
如果為了輸入一段內(nèi)容,可以表示鍵盤輸入一段字符串內(nèi)容,如當string的值為‘l love pyautogui’,就表示通過鍵盤輸入一串字符串內(nèi)容。
例如:
pyautogui.typewrite('l love pyautogui')
“interval”參數(shù)可以用來控制每個按鍵按下間隔的時間。
給參數(shù)加上中括號 [],參數(shù)string表示鍵盤上按鍵的名稱,就取代了前面的press方法,同樣可以實現(xiàn)控制鍵盤按鍵功能。
pyautogui.typewrite([string])
要注意的是:此方法可以寫入英文和數(shù)字,但是并不能夠?qū)懭胫形摹?/p>
3.3 鍵盤快捷鍵
pass
3.4 解決鍵盤輸入中文問題
按照正常的輸入邏輯,輸入中文需要使用輸入法輸入拼音,再選中需要的正確字符,這樣的操作顯然太過繁瑣。我們可以使用一些庫向系統(tǒng)剪切板中寫入中文,再調(diào)用熱鍵進行粘貼。
操作剪貼板的常見庫有win32clipboard和pyperclip兩種,我們都可以嘗試使用,都很方便。
唯一的區(qū)別點可能是pyperclip在打包為exe時,文件體積會更大。
pyperclip:
# -*- coding: utf8 -*- import pyperclip import pyautogui #Python 2 版本pyperclip提供中文復制 #可以把pyperclip的寫入與粘貼快捷鍵封裝為一個函數(shù) def paste(foo): pyperclip.copy(foo) pyautogui.hotkey('ctrl', 'v') #寫入一行文字 foo = u'學而時習之' #移動到文本框 pyautogui.click(442, 348) #進行粘貼 paste(foo)
win32clipboard :
注意,要先安裝pywin32,win32clipboard包含在其中
pip install pywin32
案例代碼:
# -*- coding: utf8 -*- import pyautogui import win32clipboard as w import win32con #獲取剪切板內(nèi)容 def gettext(): w.OpenClipboard() t = w.GetClipboardData(win32con.CF_TEXT) w.CloseClipboard() return t #寫入剪切板內(nèi)容 def settext(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_TEXT, aString) w.CloseClipboard() #寫入中文字 a="我們中國滴漢字CSDN搜代碼寫注釋" #對中文進行轉(zhuǎn)碼,否則會出現(xiàn)亂碼 settext(a.encode('gbk')) #這邊得編碼一下,否則復制出來是亂碼的 #移動到文本框 pyautogui.click(442, 348) #進行粘貼 pyautogui.hotkey('ctrl', 'v')
值得注意的是,用win32clipboard將中文寫入剪貼板,需要先進行轉(zhuǎn)碼,否則會有亂碼出現(xiàn)。
到此這篇關(guān)于Python RPA自動化機器人模擬鼠標鍵盤的文章就介紹到這了,更多相關(guān)Python RPA自動化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
安裝pyhttpx解決ImportError: DLL load failed錯誤
這篇文章主要為大家介紹了安裝pyhttpx解決ImportError: DLL load failed錯誤,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08完美解決torch.cuda.is_available()一直返回False的玄學方法
這篇文章主要介紹了完美解決torch.cuda.is_available()一直返回False的玄學方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Opencv+Python實現(xiàn)圖像運動模糊和高斯模糊的示例
今天小編就為大家分享一篇關(guān)于Opencv+Python實現(xiàn)圖像運動模糊和高斯模糊的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04python matplotlib.pyplot.plot()參數(shù)用法
這篇文章主要介紹了python matplotlib.pyplot.plot()參數(shù)用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04