python自動(dòng)化UI工具發(fā)送QQ消息的實(shí)例
概述
個(gè)人遇到過(guò)小的需求,windows自動(dòng)水群發(fā)送垃圾消息,使用一些特別簡(jiǎn)單易上手的小工具,快速實(shí)現(xiàn)功能需求(而不是使用一些重量級(jí)的還需要額外花時(shí)間去熟悉功能語(yǔ)法的大工具,如UI自動(dòng)化工具sikulix)。在一番摸索下,得出一番結(jié)論:
對(duì)于多平臺(tái)的UI自動(dòng)復(fù)雜操作,還是去學(xué)sikulix吧,這不是啃一點(diǎn)win32 api獲取窗口句柄就能輕松解決的,畢竟sikulix是MIT大佬折騰出來(lái)的。而且,原理也更復(fù)雜(通過(guò)使用opencv對(duì)窗體控件進(jìn)行識(shí)別,進(jìn)而實(shí)現(xiàn)控制操作)。
對(duì)于簡(jiǎn)單的操作(控制剪切板緩存、自動(dòng)化keyboard操作、desktop光標(biāo)移動(dòng)、鼠標(biāo)點(diǎn)擊動(dòng)作等)可以使用python的一些包進(jìn)行簡(jiǎn)單的模擬實(shí)現(xiàn):pyautogui / pywin32 等。
pyautogui是美國(guó)一個(gè)知名python程序員也是優(yōu)秀的python作者Al Sweigart維護(hù)的一個(gè)模塊,個(gè)人是比較推崇的,因?yàn)橄鄬?duì)來(lái)說(shuō),整個(gè)模塊都是python寫(xiě)的,可讀性比較好,對(duì)一般功能的封裝得很好。pywin32就有點(diǎn)不一樣了,這個(gè)完全是用python對(duì)win32 api接口進(jìn)行python api的轉(zhuǎn)換,用起來(lái)比較復(fù)雜,對(duì)windows api及c sharp有一定了解,加上文檔全但是基本就是原樣包windows api的文檔抄了一下,所以看起來(lái)是相當(dāng)痛苦的。(但是實(shí)際上pywin32跟pyautogui的思路都是使用windows api獲取窗體程序句柄進(jìn)而實(shí)現(xiàn)自動(dòng)化操控,從實(shí)現(xiàn)原理上看來(lái),也注定這種方式是不可能完成過(guò)于復(fù)雜的UI自動(dòng)化作業(yè)的。)
目標(biāo)
使用pyautogui,實(shí)現(xiàn)自動(dòng)化發(fā)送qq消息。
實(shí)現(xiàn)
安裝三方python包,pyautogui
pip install pyautogui
引入包,進(jìn)行自動(dòng)化腳本編寫(xiě) —— 相當(dāng)簡(jiǎn)單易讀,參考api文檔
①打開(kāi)對(duì)應(yīng)的群聊天窗口,才能獲取到句柄列表,設(shè)置發(fā)送使用ctrl+enter鍵(方便自動(dòng)化控制)
②編寫(xiě)代碼
import pyautogui as gui import time print(gui.getWindows()) # getWindows獲取所有活動(dòng)窗體程序句柄對(duì)象的字典,key為窗體程序title,value為hwnd對(duì)象 gui.Window(gui.getWindows().get('Python數(shù)據(jù)分析交流群')).set_foreground() # Window使用hwnd對(duì)象創(chuàng)建window對(duì)象,對(duì)窗體程序進(jìn)行控制 # 這一部分在提供的官方api文檔里并沒(méi)有提到,這是作者故意沒(méi)有提及的窗體程序句柄處理,才對(duì)win api封裝了幾個(gè)功能 for i in range(10): gui.typewrite(time.asctime()+' : '+str(i)) # typewrite可以參考文檔,實(shí)際是模擬鍵盤(pán)輸入,所以當(dāng)這里的內(nèi)容換成中文時(shí),是無(wú)效的 gui.hotkey('ctrl','enter') # hotkey模擬組合鍵 time.sleep(10) >>>> print內(nèi)容 {'': <ctypes.wintypes.LP_c_long object at 0x0000027E50544D48>, 'SelfProject [C:\\Users\\Stan Pao\\PycharmProjects\\SelfProject] - ...\\test2.py [SelfProject] - PyCharm': <ctypes.wintypes.LP_c_long object at 0x0000027E50544F48>, 'Python數(shù)據(jù)分析交流群': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB048>, '南京捷安特精英俱樂(lè)部': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB0C8>, 'pyautogui - OneNote': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB148>, '寫(xiě)文章-CSDN博客 - Google Chrome': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB1C8>, 'Program Manager': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB248>}
效果如下:還是很簡(jiǎn)單好用的~
以上這篇python自動(dòng)化UI工具發(fā)送QQ消息的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python鍵鼠操作自動(dòng)化庫(kù)PyAutoGUI簡(jiǎn)介(小結(jié))
- Python GUI自動(dòng)化實(shí)現(xiàn)繞過(guò)驗(yàn)證碼登錄
- Python使用pyautogui模塊實(shí)現(xiàn)自動(dòng)化鼠標(biāo)和鍵盤(pán)操作示例
- Python PyAutoGUI模塊控制鼠標(biāo)和鍵盤(pán)實(shí)現(xiàn)自動(dòng)化任務(wù)詳解
- 關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼
- SpringBoot優(yōu)化啟動(dòng)速度的方法實(shí)現(xiàn)
- Android App開(kāi)發(fā)的自動(dòng)化測(cè)試框架UI Automator使用教程
- Android 自動(dòng)化測(cè)試經(jīng)驗(yàn)分享 UiObejct.getFromParent()的使用方法
- UI自動(dòng)化定位常用實(shí)現(xiàn)方法代碼示例
相關(guān)文章
python冒泡排序簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了python冒泡排序簡(jiǎn)單實(shí)現(xiàn)方法,實(shí)例分析了Python冒泡排序的簡(jiǎn)單實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07使用pyinstaller打包PySide2程序中遇到的問(wèn)題
說(shuō)到打包,我們就需要用到python程序的打包工具pyinstaller了,這個(gè)包安裝簡(jiǎn)單,使用同樣簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于使用pyinstaller打包PySide2程序中遇到的問(wèn)題,需要的朋友可以參考下2023-05-05Python 利用Entrez庫(kù)篩選下載PubMed文獻(xiàn)摘要的示例
這篇文章主要介紹了Python 利用Entrez庫(kù)篩選下載PubMed文獻(xiàn)摘要的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-1120個(gè)解決日常編程問(wèn)題的Python代碼分享
在這篇文章中,主要和大家分享了20個(gè)Python代碼片段,以幫助你應(yīng)對(duì)日常編程挑戰(zhàn)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟上小編一起了解一下2023-01-01詳解pyinstaller selenium python3 chrome打包問(wèn)題
這篇文章主要介紹了詳解pyinstaller selenium python3 chrome打包問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Python基于matplotlib繪制棧式直方圖的方法示例
這篇文章主要介紹了Python基于matplotlib繪制棧式直方圖的方法,涉及Python使用matplotlib進(jìn)行圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08pyqt5讓圖片自適應(yīng)QLabel大小上以及移除已顯示的圖片方法
今天小編就為大家分享一篇pyqt5讓圖片自適應(yīng)QLabel大小上以及移除已顯示的圖片方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06