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

Python RPA自動(dòng)化機(jī)器人模擬鼠標(biāo)鍵盤

 更新時(shí)間:2023年02月16日 09:13:20   作者:代碼寫注釋  
這篇文章主要介紹了Python RPA自動(dòng)化機(jī)器人模擬鼠標(biāo)鍵盤,RPA,全稱為Robotic Process Automation,即機(jī)器人流程自動(dòng)化。我們可以利用RPA技術(shù)將工作中可重復(fù)的部分流程化,讓機(jī)器替我們完成這一工作

RPA,全稱為Robotic Process Automation,即機(jī)器人流程自動(dòng)化。

我們可以利用RPA技術(shù)將工作中可重復(fù)的部分流程化,讓機(jī)器替我們完成這一工作。

許多程序并不提供方便的接口,我們難以直接通過腳本來批量完成工作任務(wù)。

PyAutoGUl允許我們使用Python腳本來控制鼠標(biāo)和鍵盤以自動(dòng)與其他應(yīng)用程序交互,我們可以用這個(gè)庫來記錄我們的鍵鼠操作,從而使得計(jì)算機(jī)像人一樣去使用那些應(yīng)用程序,使人們從繁瑣的重復(fù)性工作中抽離出來。

我們一起來了解一下PyAutoGUI庫的安裝及其使用方法。

1. PyAutoGUI庫的安裝

1.1 系統(tǒng)環(huán)境

操作系統(tǒng):win10 64位

Python版本:Python 3.7.0及其以上

1.2 安裝參考

1、使用pip進(jìn)行安裝,pip install pyautogui

使用pip方式安裝PyAutoGUI庫。

#創(chuàng)建虛擬環(huán)境
mkvirtualenv -p python3.10 PythonRPA
#進(jìn)入虛擬環(huán)境
workon PythonRPA
pip install pyautogui
pip list

2、下載后安裝

手動(dòng)下載進(jìn)行安裝,

進(jìn)入網(wǎng)址:傳送門,點(diǎn)Download files,下載右側(cè)的PyAutoGUI-0.9.38.tar.gz

3、檢測安裝是否成功

python
import pyautogui

2.鼠標(biāo)控制函數(shù)

在日常生活中經(jīng)常使用的鼠標(biāo)動(dòng)作,都可以使用PyAutoGUI庫中的函數(shù)來模擬,

那么一起來了解下鼠標(biāo)坐標(biāo)的定義及一些鼠標(biāo)控制函數(shù)。

2.1 屏幕分辨率和鼠標(biāo)位置

先來了解一下鼠標(biāo)坐標(biāo)的定義。

PyAutoGUI會(huì)獲取我們的屏幕大小信息,之后以屏幕的左上角為坐標(biāo)原點(diǎn),從坐標(biāo)原點(diǎn)向右為x軸,從零開始遞增;

從坐標(biāo)原點(diǎn)向下為y軸,從零開始遞增。

最左上角的像素點(diǎn)坐標(biāo)為(0,0)。

如果屏幕分辨率為1920×1080,則最右下角的像素點(diǎn)將為(1919,1079)(因?yàn)樽鴺?biāo)從0開始而不是1)

我們可以用函數(shù)獲取屏幕分辨率大小以及鼠標(biāo)當(dāng)前坐標(biāo):

#屏幕分辨率大小由size()函數(shù)作為兩個(gè)整數(shù)的元組返回
pyautogui.size()
#鼠標(biāo)光標(biāo)的當(dāng)前X和Y坐標(biāo)由position()函數(shù)返回
print(pyautogui.position())

此外,也可以通過一些外部軟件獲取鼠標(biāo)坐標(biāo),如微信的截圖功能:

登陸微信后按下 ctrl+a,

鼠標(biāo)右側(cè)就會(huì)展示出當(dāng)前坐標(biāo)。

2.2 控制鼠標(biāo)移動(dòng)

pyautogui.moveTo([1392,47],duration=1)

此種方式無論鼠標(biāo)的當(dāng)前位置在哪,都控制鼠標(biāo)移動(dòng)到屏幕坐標(biāo)軸的(x,y)=(1392,47)的位置上。

pyautogui.moveRel([20,30],duration=1)

而此種方式則先要獲取鼠標(biāo)的當(dāng)前位置,然后在此位置的基礎(chǔ)上向右移動(dòng)20個(gè)像素,向下移動(dòng)30個(gè)像素。

而另一個(gè)參數(shù)“duration”規(guī)定鼠標(biāo)移動(dòng)到目標(biāo)位置所需要的時(shí)間,我們會(huì)看到鼠標(biāo)在規(guī)定時(shí)間內(nèi)逐漸移動(dòng)到目標(biāo)位置,就像我們真正在手動(dòng)移動(dòng)鼠標(biāo)一樣。

2.3 控制鼠標(biāo)點(diǎn)擊

我們可以簡單的調(diào)用click()函數(shù)來完成點(diǎn)擊,這樣會(huì)直接使鼠標(biāo)在當(dāng)前位置單擊鼠標(biāo)左鍵一次:

pyautogui.click()

如果想要在特定坐標(biāo)點(diǎn)單擊鼠標(biāo),可以用下面的方式,這樣就不用再先行移動(dòng)鼠標(biāo):

pyautogui.click([566,193])

在鼠標(biāo)點(diǎn)擊中,有一些值得注意的參數(shù):

參數(shù)可選值簡介
buttonleft, right, middle決定由鼠標(biāo)左鍵、右鍵、還是滾輪來執(zhí)行點(diǎn)擊操作
clicks整數(shù)決定鼠標(biāo)點(diǎn)擊次數(shù)
interval數(shù)字與clicks搭配使用,決定每次鼠標(biāo)點(diǎn)擊事件的間隔時(shí)間

我們也可以完成對(duì)點(diǎn)擊動(dòng)作的分解,“mouseDown”即表示按下鼠標(biāo)的動(dòng)作,而”mouseUp”表示抬起鼠標(biāo)的動(dòng)作。

pyautogui.mouseDown(button='left', x=243, y=637)
pyautogui.moveTo([707,669],duration = 1)
pyautogui.mouseUp(button='left', x=707, y=669)

另外,其他鼠標(biāo)點(diǎn)擊事件的控制代碼如下所示,我們可以直接調(diào)用這些函數(shù),以減少大量添加描述參數(shù):

pyautogui.doubleclick()  #控制雙擊鼠標(biāo)左鍵
pyautogui.rightClick()   #控制單擊鼠標(biāo)右鍵
pyautogui.middleclick()  #控制單擊鼠標(biāo)滾輪鍵

2.4 控制鼠標(biāo)滾動(dòng)

通過scroll()函數(shù),我們可以模仿鼠標(biāo)滾輪的滑動(dòng)。

pyautogui.scroll(num)

其中num的取值范圍是任意整數(shù),num取正數(shù)表示滾輪向上滑動(dòng),而取負(fù)數(shù)=數(shù)表示滾輪向下滑動(dòng)。

2.5 控制鼠標(biāo)拖動(dòng)

我們還常常需要用鼠標(biāo)選中一段區(qū)域,這時(shí)我們就需要用到控制鼠標(biāo)拖動(dòng)功能。

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)

此種方式和前面控制鼠標(biāo)移動(dòng)的原理相同,共有兩種控制鼠標(biāo)拖動(dòng)的方式,

第一種是控制鼠標(biāo)拖動(dòng)到[873,951]坐標(biāo)位置,

第二種是以當(dāng)前鼠標(biāo)位置為起點(diǎn),向右拖動(dòng)20個(gè)像素的距離,向下拖動(dòng)30個(gè)像素的距離。

“duration”參數(shù)依然控制鼠標(biāo)移動(dòng)的時(shí)間。

“button”等參數(shù)仍然適用在這里。

3. 控制鍵盤

類似的,我們也可以用PyAutoGUI庫來模擬鍵盤輸入。

3.1 控制鍵盤按鍵

pyautogui.press('a')
pyautogui.press('space')

代碼輸入?yún)?shù)表示要控制鍵盤按下鍵的鍵值,單獨(dú)輸入字母,如’a’,就相當(dāng)于按下鍵盤上的’a’鍵,一些常用的快捷鍵列舉如下:

按鍵說明
enter(或return 或 \n)回車
escESC鍵
shiftleft,shiftright左右SHIFT鍵
altleft, altright左右ALT鍵
ctrlleft,ctrlright左右CTRL鍵
tab (t)TAB鍵
backspace, deleteBACKSPACE、DELETE鍵
pageup, pagedownPAGEUP和PAGE DOWN鍵

3.2 控制鍵盤輸入

pyautogui.typewrite(string)

如果為了輸入一段內(nèi)容,可以表示鍵盤輸入一段字符串內(nèi)容,如當(dāng)string的值為‘l love pyautogui’,就表示通過鍵盤輸入一串字符串內(nèi)容。

例如:

pyautogui.typewrite('l love pyautogui')

“interval”參數(shù)可以用來控制每個(gè)按鍵按下間隔的時(shí)間。

給參數(shù)加上中括號(hào) [],參數(shù)string表示鍵盤上按鍵的名稱,就取代了前面的press方法,同樣可以實(shí)現(xiàn)控制鍵盤按鍵功能。

pyautogui.typewrite([string])

要注意的是:此方法可以寫入英文和數(shù)字,但是并不能夠?qū)懭胫形摹?/p>

3.3 鍵盤快捷鍵

pass

3.4 解決鍵盤輸入中文問題

按照正常的輸入邏輯,輸入中文需要使用輸入法輸入拼音,再選中需要的正確字符,這樣的操作顯然太過繁瑣。我們可以使用一些庫向系統(tǒng)剪切板中寫入中文,再調(diào)用熱鍵進(jìn)行粘貼。

操作剪貼板的常見庫有win32clipboard和pyperclip兩種,我們都可以嘗試使用,都很方便。

唯一的區(qū)別點(diǎn)可能是pyperclip在打包為exe時(shí),文件體積會(huì)更大。

pyperclip:

# -*- coding: utf8 -*-
import pyperclip
import pyautogui
#Python 2 版本pyperclip提供中文復(fù)制
#可以把pyperclip的寫入與粘貼快捷鍵封裝為一個(gè)函數(shù)
def paste(foo):
  pyperclip.copy(foo)
  pyautogui.hotkey('ctrl', 'v')
#寫入一行文字
foo = u'學(xué)而時(shí)習(xí)之'
#移動(dòng)到文本框
pyautogui.click(442, 348)
#進(jìn)行粘貼
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搜代碼寫注釋"
#對(duì)中文進(jìn)行轉(zhuǎn)碼,否則會(huì)出現(xiàn)亂碼
settext(a.encode('gbk')) #這邊得編碼一下,否則復(fù)制出來是亂碼的
#移動(dòng)到文本框
pyautogui.click(442, 348)
#進(jìn)行粘貼
pyautogui.hotkey('ctrl', 'v')

值得注意的是,用win32clipboard將中文寫入剪貼板,需要先進(jìn)行轉(zhuǎn)碼,否則會(huì)有亂碼出現(xiàn)。

到此這篇關(guān)于Python RPA自動(dòng)化機(jī)器人模擬鼠標(biāo)鍵盤的文章就介紹到這了,更多相關(guān)Python RPA自動(dòng)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論