日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

巧用Python : 用PyAutoGUI模塊實現(xiàn)自動化

 F2967527 2022-06-22 發(fā)布于北京

寫在前頭

最近學(xué)習(xí)了一下PyAutoGUI模塊,就把做的幾個例子錄成了視頻教程,Python提供的第三方庫實在方便,通過閱讀各個模塊官網(wǎng)上提供的文檔對快速掌握這些現(xiàn)成的模塊至關(guān)重要,我所做的例子只是用到了人家的皮毛,要想更深入的理解,還需直接閱讀官方提供的第一手資料,例如本次的PyAutoGUI模塊,可以訪問下面的網(wǎng)址查看文檔:

https://pyautogui.readthedocs.io/en/latest/

另外,本課的例子不能直接拿來運(yùn)行喲!因為這些坐標(biāo)位置是按照我的電腦上圖標(biāo)位置進(jìn)行設(shè)定的,若遷移到別的環(huán)境,可能需要做出適當(dāng)?shù)恼{(diào)整。

PyAutoGUI模塊的安裝

嘗試課程所涉及例子之前,需要用pip命令安裝所需要的PyAutoGUI模塊

pip install pyautogui

獲得鼠標(biāo)當(dāng)前的位置坐標(biāo)

在第一節(jié)課的例子中,我利用pyautogui的position方法得到了坐標(biāo)信息的元組,來為下一步確定鼠標(biāo)該移動到哪里才能讓程序塢出現(xiàn)在屏幕上作準(zhǔn)備。

print(pyautogui.position())

控制鼠標(biāo)和鍵盤

在第二節(jié)課的例子中,我演示了如何將鼠標(biāo)移至指定位置、點擊,并模擬鍵盤輸入的操作,其中涉及pyautogui的方法有:moveTo(), click(), typewrite(要輸入的字符串, 輸入間隔時長), press(代表對應(yīng)鍵字符串),其中可以在官方文檔中搜索KEYBOARD_KEYS來查看對應(yīng)鍵字符串的關(guān)鍵字列表。

1import py
2import pyautogui, time
3try:
4    pyautogui.moveTo(358899)
5    time.sleep(1)
6    pyautogui.click(358899)
7    time.sleep(1)
8    pyautogui.click(48891)
9    time.sleep(1)
10    pyautogui.typewrite('www.bing.com',0.5)
11    time.sleep(1)
12    pyautogui.press('enter')
13except KeyboardInterrupt:
14    print('\nStop!')

在屏幕上定位指定圖片

第二節(jié)課中讓鼠標(biāo)自動移動到固定位置進(jìn)行操作的方法受限于指定的坐標(biāo),瀏覽器圖標(biāo)或瀏覽器窗口稍有移動,都會影響程序正常打開瀏覽器的成功率。因此在第三節(jié)課視頻中我介紹了pyautogui的另一個方法locateOnScreen(要尋找的圖片路徑字符串),在屏幕上查找這個圖片,如果沒找到返回None,找到的話,返回一個Box類型的對象,其中包含了找到區(qū)域的左上角位置及長寬數(shù)據(jù)。

然而,多次運(yùn)行程序后發(fā)現(xiàn)成功率仍然不高,我的推測是由于圖片存儲時有減損,圖像透明度,或者圖像大小的變化導(dǎo)致無法正常定位。在pyautogui的官網(wǎng)例子中,介紹了locateOnScreen的另一個參數(shù)confidence:

圖片

添加上這個參數(shù)后,能夠大大提高程序運(yùn)行的成功率,改進(jìn)后的程序中,我把參數(shù)的值設(shè)為了0.5,結(jié)果成功率明顯提高。

FAIL-SAFE

在使用pyautogui編程過程中,如果在一個無限循環(huán)中鼠標(biāo)不停處于被移動的狀態(tài),會有一種電腦失控的可怕效果,除了硬關(guān)機(jī),還有什么方法呢,pyautogui提供了一個FAILSAFE來讓你脫困,在官網(wǎng)文檔中對它的解釋如下:

圖片

只要在受困時,使用洪荒之力移動你的鼠標(biāo)將它瞬間移到屏幕的任意四角之一,就能彈出FailSafeException這個異常。另外,看到最后加黑大寫的那句了嗎?一般默認(rèn)FAILSAFE已經(jīng)是True的值了,雖然你可以在代碼里設(shè)成False,但是人家還是高度建議咱別這么干!

完整代碼

 1import py
2import pyautogui, time
3try:
4    iconloc = pyautogui.locateOnScreen('icon.png',confidence=0.5)
5    pyautogui.moveTo(358899)
6    #time.sleep(1)
7    while iconloc == None:
8        iconloc = pyautogui.locateOnScreen('icon.png',confidence=0.5)
9        print(f'iconloc:{iconloc}')
10
11    pyautogui.click(iconloc)
12    time.sleep(1)
13    browserloc = pyautogui.locateOnScreen('browser.png')
14    while browserloc == None:
15        browserloc = pyautogui.locateOnScreen('browser.png')
16        print(f'browserloc:{browserloc}')
17    pyautogui.click(browserloc)
18    time.sleep(1)
19    pyautogui.typewrite('www.bing.com',0.5)
20    time.sleep(1)
21    pyautogui.press('enter')
22except KeyboardInterrupt:
23    print('\nStop!')
圖片

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多