日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

要解決什么問題

在我們實際工作生活中,有許多重復性的工作,比如新員工入職流程。除了員工個人信息的不同,其他的流程應該是完全一樣,因此此類工作完全可以自動化解決。但是問題來了,有的流程需要填寫Excel表格,而有些流程需要填寫網(wǎng)頁表格,這就導致可能比較復雜。那么有沒有辦法,一個通用的辦法來解決這些問題呢?答案是肯定有,我們用最簡單的方法,通過Python來控制鍵盤和鼠標。

程序員用Python實現(xiàn)自動化控制鍵盤和鼠標

 

實現(xiàn)思路

對于本章的內(nèi)容我覺得可以幫我們幾乎完成任何事情,因為我們可以通過程序來模擬鍵盤和鼠標的任何操作,這就意味著我們的程序可以像一個機器人一樣,根據(jù)我們的指令去做任何事情。我們對電腦的操作也就是鍵盤和鼠標了,因此如果可以通過程序控制鍵盤鼠標,那么也就意味著我們可以用程序?qū)崿F(xiàn)任何事情。

當然了,針對某些場景,我們僅僅能夠操作鼠標和鍵盤,還是不能搞定。因為鍵盤和鼠標僅僅是輸入,我們無法獲取相應輸入操作的輸出,比如鼠標點擊了某個按鈕,我們不知道這個點擊操作是否被正確的響應了。那么我們就需要去對輸入操作的結(jié)果進行一些判定,比如某個按鈕的操作完成后,會彈出成功或失敗的提示框。僅僅通過鍵盤和鼠標,我們是無法感知是否有提示框彈出,更不可能知道彈出框的內(nèi)容是什么。

那么怎么解決這個問題呢?我們前面學習過PIL模塊,這里我們可以通過該模塊的來進行圖片解析,從而確定輸入執(zhí)行后對應的輸出是否正確。這樣,我們的程序就有一個比較完成的交互行為。

相關模塊的安裝及介紹

本節(jié)將會介紹本章自動化控制鍵盤和鼠標中會使用到的相關模塊。

pyperclip模塊

pyperclip模塊是一個跨平臺的粘貼板模塊,實現(xiàn)了復制和粘貼功能。可以通過pip命令進行安裝,命令如下。

pip install pyperclip

下面是一個簡單的使用pyperclip模塊的例子。

>>> import pyperclip
>>> pyperclip.copy('The text to be copied to the clipboard.')
>>> pyperclip.paste()
'The text to be copied to the clipboard.'

pyautogui模塊

pyautogui模塊是一個面向人類的跨平臺GUI自動化模塊,可以用編程的方式控制鍵盤和鼠標,也就是給我們提供了一種通過程序來控制鍵盤和鼠標的方式。通過pip命令可以進行安裝,安裝過程如下所示。

PS C:Program Files (x86)Python3.6.8Scripts> pip3 install pyautogui
Collecting pyautogui
Using cached https://files.pythonhosted.org/packages/ec/e6/4aec992002f5bdb3de852978181faa47f79dc176b5447bf9fda2b1a985c6/PyAutoGUI-0.9.47.tar.gz
Collecting pymsgbox (from pyautogui)
Using cached https://files.pythonhosted.org/packages/ac/e0/0ac1ac67178a71b92e46f46788ddd799bb40bff40acd60c47c50be170374/PyMsgBox-1.0.7.tar.gz
Collecting PyTweening>=1.0.1 (from pyautogui)
Using cached https://files.pythonhosted.org/packages/b9/f8/c32a58d6e4dff8aa5c27e907194d69f3b57e525c2e4af96f39c6e9c854d2/PyTweening-1.0.3.zip
Collecting Pillow (from pyautogui)
Using cached https://files.pythonhosted.org/packages/86/00/52d0e56d787c437cd5e6f39929d1ed53b37cbe01280457e29d677b86eceb/Pillow-6.1.0-cp36-cp36m-win32.whl
Collecting pyscreeze>=0.1.21 (from pyautogui)
Using cached https://files.pythonhosted.org/packages/51/11/878e1319ccb41dce8aaf1b6af84d5088d5f4a40fda0348e51b3d1d53f96b/PyScreeze-0.1.22.tar.gz
Collecting pygetwindow>=0.0.5 (from pyautogui)
Using cached https://files.pythonhosted.org/packages/a3/e1/0a96db293bbcb56dd08209f6c1275e9282385526a8900a3411d669b140ee/PyGetWindow-0.0.7.tar.gz
Collecting mouseinfo (from pyautogui)
Using cached https://files.pythonhosted.org/packages/bb/06/07882cebab86cae3c59a1cc99587ccb39ba29f0ba34b463d859df48a2575/MouseInfo-0.0.4.tar.gz
Collecting pyrect (from pygetwindow>=0.0.5->pyautogui)
Using cached https://files.pythonhosted.org/packages/2f/68/bd7bf96fc44217e769f27912e6c9bb3e9987cba286054af6120448ce8212/PyRect-0.1.4.tar.gz
Collecting pyperclip (from mouseinfo->pyautogui)
Using cached https://files.pythonhosted.org/packages/2d/0f/4eda562dffd085945d57c2d9a5da745cfb5228c02bc90f2c74bbac746243/pyperclip-1.7.0.tar.gz
Installing collected packages: pymsgbox, PyTweening, Pillow, pyscreeze, pyrect, pygetwindow, pyperclip, mouseinfo, pyautogui
Running setup.py install for pymsgbox ... done
Running setup.py install for PyTweening ... done
Running setup.py install for pyscreeze ... done
Running setup.py install for pyrect ... done
Running setup.py install for pygetwindow ... done
Running setup.py install for pyperclip ... done
Running setup.py install for mouseinfo ... done
Running setup.py install for pyautogui ... done
Successfully installed Pillow-6.1.0 PyTweening-1.0.3 mouseinfo-0.0.4 pyautogui-0.9.47 pygetwindow-0.0.7 pymsgbox-1.0.7 pyperclip-1.7.0 pyrect-0.1.4 pyscreeze-0.1.22

比如,鼠標的雙擊,單擊和右擊等操作,示例代碼如下。

import pyautogui as lazy_boy

lazy_boy.click()
lazy_boy.doubleClick()
lazy_boy.rightClick()
lazy_boy.middleClick()

PIL模塊

PIL模塊是一個Python圖像庫模塊,它包含了很多子模塊,我們這里的例子將只使用ImageGrab模塊用于圖像操作。下面是的代碼片段,展示了ImageGrab的簡單用法。

from PIL import ImageGrab

def screenshots():
screen_width, screen_height = lazy_boy.size()
rect = (0, 0, screen_width, screen_height)
img = ImageGrab.grab(rect)
return img

代碼實現(xiàn)

到現(xiàn)在相關的準備工作已經(jīng)完成,接下來看看具體實現(xiàn)。

編寫偽碼

Python代碼實現(xiàn)中,將先介紹pyautogui模塊的一些基本操作,然后再介紹一個簡單的例子,那就是讓我們的程序自動打開Notepad++,新建一個文件,輸入一段Python代碼,最后將該文件保存為Python文件。

# pyautogui模塊的基本操作

# 打開Notepad++
# 新建一個文件
# 輸入Python代碼
# 將該文件保存為Python文件

Python代碼

下面的代碼介紹pyautogui模塊的基本用法,便于了解該模塊的基本功能。

import pyautogui as lazy_boy

# 獲取當前鼠標的坐標
current_x, current_y = lazy_boy.position()

# 鼠標操作
lazy_boy.moveTo(x, y)
lazy_boy.moveRel()
lazy_boy.locateOnScreen('./test.jpg')
lazy_boy.click(x, y) # 根據(jù)坐標x, y單擊
lazy_boy.doubleClick()
lazy_boy.rightClick()
lazy_boy.middleClick()

# 拖拽鼠標
lazy_boy.mouseDown()
lazy_boy.dragTo()
lazy_boy.dragRel()
lazy_boy.mouseUp()
lazy_boy.scroll(200)

# 鍵盤操作
lazy_boy.typewrite(message='Hello world!', interval=0.5)
lazy_boy.press('esc')
lazy_boy.press('enter')
lazy_boy.keyDown('shift')
lazy_boy.keyUp('shift')
lazy_boy.hotkey('ctrl', 'c')
lazy_boy.hotkey('ctrl', 'v')

# 粘貼板操作
import pyperclip
pyperclip.copy('學習Python')
pyperclip.paste()

# 截屏
im = lazy_boy.screenshot('screenshot.png')
# 獲取坐標位置的顏色
im.getpixel((x, y))
# 判斷坐標(x, y)處的顏色是否為(r, g, b)
lazy_boy.pixelMatchesColor(x, y, (r, g, b))
# 在當前屏幕中查找指定圖片(圖片需要由系統(tǒng)截圖功能截取的圖),比如查找按鈕坐標
coord = lazy_boy.locateOnScreen('button.png')
# 獲取找到的按鈕的中心坐標
x, y = lazy_boy.center(coord)
# 在該坐標點右擊
lazy_boy.rightClick(x, y)

# 在坐標(120, 110)處輸入"Python is a good language!"
lazy_boy.click(120, 110)
lazy_boy.typewrite('Python is a good language!')
# 為輸入過程加入延遲
lazy_boy.typewrite('Python is a good language!', 0.3)

#
lazy_boy.FAILSAFE = True
lazy_boy.PAUSE = 1
下面的代碼是一個實際案例,比較簡單,用于打開Notepad++程序,并新建一個文件,輸入兩行Python代碼,然后將該文件另存為"auto_crreate.py"。
為了點擊保存按鈕,我們需要提前將保存按鈕截圖,并存為save.png文件。
import pyperclip
import pyautogui as lazy_boy

lazy_boy.FAILSAFE = True
lazy_boy.PAUSE = 1

# 這個程序?qū)⒆詣哟蜷_Notpad++, 新建一個文件,并輸入Python代碼,最后將其保存為Python文件
lazy_boy.press('win')
lazy_boy.typewrite('Notepad++')
lazy_boy.press('enter')
lazy_boy.hotkey("ctrl", "n")
lazy_boy.typewrite("import osrnprint('Hello python')rn", 0.5)
pyperclip.copy("This is a test file")
pyperclip.paste()
lazy_boy.hotkey("ctrl", "s")
lazy_boy.typewrite("auto_create.py")

coord = lazy_boy.locateOnScreen('save.png')
print(coord)
# 獲取定位到的圖中間點坐標
x, y = lazy_boy.center(coord)
lazy_boy.click(x, y)

本文總結(jié)

本文介紹了一個非常實用的內(nèi)容,用Python自動化控制鍵盤和鼠標,這樣當我們遇到一些很棘手的問題,如果沒有第三方庫支持,那么我們就可以利用本章進行去解決。因為所有的事情都是可以通過鍵盤和鼠標來完成的,復雜的事情,我們可能需要更多代碼和操作步驟,但終究都是可以被搞定的。因此,當讀者遇到任何難題的時候,不要輕易徹底放棄,可以短暫擱置,讓這件事一直盤旋在自己的腦海中,在空閑的時候,或者某一刻就會有思路從腦海中冒出來。

分享到:
標簽:Python
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定