這篇文章主要介紹了如何使用python實(shí)現(xiàn)模擬鼠標(biāo)點(diǎn)擊,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
不知道大家在工作中有沒有一些工作需要重復(fù)的點(diǎn)擊鼠標(biāo),因?yàn)闀?huì)影響到財(cái)務(wù)統(tǒng)計(jì)報(bào)表的關(guān)系,我們每個(gè)月底月初都要修改ERP中的單據(jù)日期,單據(jù)多的時(shí)候光修改就能讓你點(diǎn)鼠標(biāo)點(diǎn)到手麻。(這里要吐槽一下浪沙軟件,別的單據(jù)都可以批量修改日期,就是這個(gè)移倉(cāng)單不行,你們研發(fā)怎么就這么懶?剩下這么點(diǎn)工作就不完成他?)之前同事有跟我提到過鍵盤精靈,因?yàn)楫?dāng)時(shí)負(fù)責(zé)別的工作,一直沒有去了解。現(xiàn)在公司人員減少了,這工作又回到我身上了,剛好之前我在學(xué)習(xí)連連看的時(shí)候,知道Python 也能實(shí)現(xiàn)模擬鼠標(biāo)點(diǎn)擊,那就直接用上唄。
先來(lái)了解一下pyautogui。
pyautogui.moveTo,移動(dòng)鼠標(biāo);pyautogui.click,點(diǎn)擊鼠標(biāo),通過button來(lái)控制左擊還是右擊,click=n設(shè)置點(diǎn)擊的次數(shù),interval控制點(diǎn)擊用的時(shí)間,有些程序確認(rèn)雙擊是有個(gè)時(shí)間間隔的,如果不加上這個(gè)間隔,還真沒辦法識(shí)別。(好吧,這里說(shuō)的就是你,浪沙。至少第一個(gè)單你是識(shí)別不了。害我沒少測(cè)試。)就這兩個(gè)功能對(duì)于我的這次操作已經(jīng)是夠用了。
當(dāng)然Pyautogui的作用肯定不止這些,pyautogui.typewrite還能輸入鍵盤有的字母的數(shù)字符號(hào),screenshot截屏(這個(gè)在實(shí)現(xiàn)連連看的時(shí)候也能用得上哦。)等等,有興趣的可以度娘學(xué)習(xí)一下。我們知道怎么模擬控制鼠標(biāo)了,總得告訴它,要走到哪里,點(diǎn)擊哪里吧。
Pyautogui是用像素來(lái)告訴程序要操作的位置的。那我們?cè)趺吹玫竭@個(gè)像素呢?這里,我用的是操作系統(tǒng)自帶的畫圖程序。畫圖里面“選擇”這個(gè)功能會(huì)顯示我們所選擇的區(qū)域的像素,我們只要從我們需要點(diǎn)擊的位置一直選到最左上角就可以了。
好了,到這里萬(wàn)事俱備,上個(gè)代碼吧。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import pyautogui for i in range ( 2 , 11 ): 用 0.5 秒的時(shí)間把光標(biāo)移動(dòng)到( 400 , 175 + i * 20 ) 位置 pyautogui.moveTo( 400 , 175 + i * 20 , duration = 0.5 ) pyautogui.click(clicks = 2 , button = 'left' , interval = 0.05 ) # 點(diǎn)擊進(jìn)入單據(jù) time.sleep( 3 ) pyautogui.click( 100 , 140 ) # 點(diǎn)擊修改 time.sleep( 3 ) pyautogui.click( 350 , 190 , button = 'left' ) # 左擊發(fā)貨日 pyautogui.click( 350 , 190 , button = 'right' ) # 右擊發(fā)貨日 time.sleep( 1.5 ) pyautogui.click( 595 , 397 ) # 選擇日期5 time.sleep( 1.5 ) pyautogui.click( 815 , 472 ) # 完成 time.sleep( 1.5 ) pyautogui.click( 565 , 425 ) # 發(fā)出日大于接收日, 是 time.sleep( 1.5 ) pyautogui.click( 155 , 140 ) # 點(diǎn)擊保存 time.sleep( 2 ) pyautogui.click( 432 , 140 ) # 點(diǎn)擊查詢 time.sleep( 5 ) |
我這里一個(gè)for 循環(huán)是讓他從第一張單開始操作,操作到這一頁(yè)的最后一張單。Time.sleep嘛,這個(gè)系統(tǒng)運(yùn)行是需要時(shí)間的,我們讓鼠標(biāo)休息一下。
最后還有一個(gè)要可能需要提醒大家的地方就是,如果程序走到一半,發(fā)現(xiàn)沒必要再執(zhí)行下去了,或者有錯(cuò)誤了(比如系統(tǒng)卡死了設(shè)置的休息時(shí)間不夠),希望停止程序,這時(shí)候CTRL+C是不行的。
你需要把你的鼠標(biāo)放到屏幕的最左上角。一般幾秒后點(diǎn)擊就會(huì)停止下來(lái),(python shell會(huì)報(bào)錯(cuò),這個(gè)不用管的)至于效果嘛,這里就不錄動(dòng)圖了,畢竟是會(huì)泄漏個(gè)人和公司信息。肯定是親測(cè)有效,以我半個(gè)小時(shí)的休息時(shí)間做擔(dān)保。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://www.cnblogs.com/chengxyuan/p/12146373.html