您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)如何利用Python制作微信小客服的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
整體思路:利用自動(dòng)化測(cè)試庫(kù)達(dá)到預(yù)期效果。
運(yùn)行環(huán)境:PyCharm Python
碼字流程
獲取微信的PID
連接到微信
微信的一些基本功能
獲取用戶發(fā)來(lái)的消息獲取聊天信息用戶在聊天界面找到某個(gè)用戶搜索某個(gè)用戶向某個(gè)用戶發(fā)送文本信息刪除某個(gè)用戶
微信的一些額外功能
修改備注添加指定申請(qǐng)好友一鍵添加所有申請(qǐng)好友發(fā)送圖片至指定用戶接收超級(jí)用戶指令,處理相關(guān)任務(wù)接收普通用戶指令,回復(fù)相關(guān)內(nèi)容一鍵刪除所有好友掉線通知超級(jí)用戶掉線自動(dòng)重登對(duì)接其他接口,完成相關(guān)任務(wù)收藏信息自動(dòng)收款判斷金額并通知超級(jí)用戶對(duì)接數(shù)據(jù)庫(kù),判斷用戶是否在使用該功能的期限內(nèi)一鍵通知信息至好友指定好友消息免打擾群踢出成員轉(zhuǎn)發(fā)信息發(fā)送收藏中的內(nèi)容至用戶發(fā)送本地文件至用戶
獲取微信的PID
這里用到了psutil庫(kù),大概意思是獲取所有的進(jìn)程,遍歷挑選出微信的進(jìn)程ID
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:smart_num_1 # Blog:https://blog.csdn.net/smart_num_1 from psutil import process_iter def get_pid(): PID = process_iter() name = '' pid_num = 0 for pid_temp in PID: pid_dic = pid_temp.as_dict(attrs = ['pid','name']) if pid_dic ['name'] == 'WeChat.exe': name = pid_dic ['name'] pid_num = pid_dic ['pid'] break if name =='WeChat.exe': return pid_num else : return False
連接到微信
# 創(chuàng)建一個(gè)實(shí)例對(duì)象,Pywinauto中backend有兩種:win32和uia,默認(rèn)為win32。可使用spy++和Inspect工具判斷backend適合寫(xiě)哪種。在這里微信為'uia' self.app = Application(backend = 'uia') # 將 app 連接到已經(jīng)登陸成功的微信,這里可以用進(jìn)程ID、句柄、以及程序路徑進(jìn)行連接,此處采用PID self.app.connect(process = PID ) # 定位到微信窗口 self.win = app[u'微信']
微信的一些基本功能
獲取用戶發(fā)來(lái)的消息
def get_text(self): data = '' try: data = self.win.Edit2.get_value() with open('./temporary_text','w',encoding = 'utf-8') as f: f.write(data) except: pass return data #line:4
獲取聊天信息用戶
def get_users(self): user_lis = [] try: # 定位到信息列表,獲取這個(gè)對(duì)象 conunacation = self.win.child_window(title = "會(huì)話",control_type = "List") # 定位到這個(gè)位置 position = conunacation.rectangle() mouse.click(button = 'left',coords = (position.left + 100 ,position.top + 10 )) # 定位到列表的位置,取他的子控件,至于為何,列表是一個(gè)總的容器,而每個(gè)用戶都存在這個(gè)容器中,固取子控件 users = conunacation.children() for user in users: user_lis.append(user.window_text()) except: pass return user_lis
在聊天界面找到某個(gè)用戶
def find_user (self ,user = ''): # 找到指定名稱用戶的按鈕 user = self.win.child_window(title = user, control_type = 'Text') # 定位到該按鈕,獲取它的相對(duì)位置 position = user .rectangle() # 模擬點(diǎn)擊,coords 是點(diǎn)擊的位置 mouse.click (button = 'left',coords = (position.left ,position.top)) sleep(0.3)
搜索某個(gè)用戶
def search_ueser (self ,user_name = ''): # 找控件的方法如上個(gè)函數(shù)中介紹,此處不再繼續(xù)介紹 search = self.win.child_window(title = "搜索", control_type = "Edit") position = search.rectangle() mouse.click(button = 'left', coords = (position.left + 100 ,position.top + 10)) sleep(0.1) mouse.click(button = 'left', coords = (position.left + 100 ,position.top + 10)) # 自帶的模塊,輸入該用戶的名字 self.win.type_keys(user_name) sleep(0.6) self.win.type_keys('{ENTER}')
向某個(gè)用戶發(fā)送文本信息
def send_message (self ,texts =''):#line:64 for text in texts .split ('\n'):#line:65 # 這里用到了另外的一個(gè)庫(kù),因?yàn)橛胮ywinauto 自帶的輸入模塊,表情,空格等是自動(dòng)略過(guò)或者識(shí)別不出,達(dá)不到按原有縮進(jìn)樣式縮進(jìn)的效果 if text.isalnum(): copy(text.strip()) hotkey ('ctrl', 'v') else: self.win.type_keys(text) sleep(0.1) hotkey ('ctrl', 'enter')#line:67 hotkey ('enter')#line:68
刪除某個(gè)用戶
def delete_user(self ,user =''): user = self.win.child_window(title = user, control_type = 'Text') position = user.rectangle() mouse.click(button = 'right', coords = (position.left - 40 ,position.top)) # 這里右鍵會(huì)彈出菜單,直接點(diǎn)擊該菜單中的刪除聊天選項(xiàng) self.app.Menu ['刪除聊天'].click_input('left')
感謝各位的閱讀!關(guān)于“如何利用Python制作微信小客服”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。