操指南:微信PC端自動(dòng)化——消息群發(fā)與文件傳輸助手)
影刀RPA實(shí)操指南微信PC端自動(dòng)化——消息群發(fā)與文件傳輸助手給三百個(gè)客戶微信挨個(gè)發(fā)節(jié)日通知手機(jī)上一個(gè)一個(gè)點(diǎn)要?jiǎng)澋绞种赋榻蠲刻彀讶請(qǐng)?bào)文件手動(dòng)拖進(jìn)文件傳輸助手純體力活。這兩件事都能用影刀RPA在電腦上自動(dòng)化讀取客戶清單、循環(huán)搜索聯(lián)系人、發(fā)送消息和文件全程不用人碰。這篇把微信PC端自動(dòng)化的完整做法和坑一次性講完——微信是桌面軟件不是網(wǎng)頁(yè)玩法和網(wǎng)頁(yè)自動(dòng)化差異很大直接決定你能不能做成功。先把預(yù)期說(shuō)清楚微信客戶端的界面控件大部分捕獲不到標(biāo)準(zhǔn)元素所以這個(gè)場(chǎng)景重度依賴圖像識(shí)別和鍵盤快捷鍵穩(wěn)定性天然不如網(wǎng)頁(yè)自動(dòng)化。我的做法是能用快捷鍵就用快捷鍵能用元素就用元素最后才靠圖像這套優(yōu)先級(jí)是我實(shí)操兩年多總結(jié)出來(lái)的。環(huán)境確認(rèn)微信屬于桌面軟件自動(dòng)化影刀RPA里沒(méi)有微信專用指令這個(gè)分類微信走的是桌面軟件自動(dòng)化路線原理和釘釘一樣先獲取窗口再在窗口里點(diǎn)擊輸入。開工前確認(rèn)三件事微信PC客戶端已登錄并保持前臺(tái)可用窗口別最小化到托盤影刀客戶端里裝好瀏覽器插件之外鼠標(biāo)鍵盤如果用驅(qū)動(dòng)模式要在設(shè)置→工具→自動(dòng)化插件里點(diǎn)裝虛擬鍵盤鼠標(biāo)驅(qū)動(dòng)關(guān)掉桌面整理工具360桌面整理助手、騰訊桌面整理助手這類和錄屏軟件它們會(huì)導(dǎo)致桌面軟件元素捕獲不到虛擬鍵盤驅(qū)動(dòng)裝完可以在設(shè)備管理器的鍵盤分類里看到ShadowBot Virtual Keyboard設(shè)備裝了它鍵盤輸入的驅(qū)動(dòng)模式才有完整能力。有個(gè)例外要知道即使裝了驅(qū)動(dòng)網(wǎng)銀的安全控件也輸入不了好在這跟微信場(chǎng)景無(wú)關(guān)。獲取窗口微信窗口的捕獲與標(biāo)題匹配流程第一步用獲取窗口相關(guān)的桌面自動(dòng)化指令綁定微信主窗口。這里有個(gè)高頻坑微信窗口標(biāo)題不是固定的微信兩個(gè)字有新消息時(shí)標(biāo)題會(huì)變。綁定窗口如果按標(biāo)題匹配標(biāo)題一變就報(bào)獲取窗口失敗。兩種修復(fù)方式官方文檔給的就是這兩招一是窗口名稱里會(huì)變化的部分用通配符匹配標(biāo)題怎么加數(shù)字都能命中二是把窗口元素里會(huì)變化的屬性取消勾選只保留穩(wěn)定的部分。我兩種都試過(guò)通配符方案最省事一次設(shè)置長(zhǎng)期有效。窗口綁定成功后先把窗口激活到前臺(tái)再操作。自動(dòng)化期間別動(dòng)鼠標(biāo)鍵盤也別鎖屏——桌面自動(dòng)化模擬的是真實(shí)鍵鼠行為你手一滑機(jī)器人就點(diǎn)歪了。元素定位微信里能捕獲到什么微信界面不是全都不能捕獲。實(shí)操下來(lái)左側(cè)功能欄的按鈕聊天、通訊錄、聊天列表里的部分項(xiàng)用「捕獲新元素」能捕獲到win元素但聊天輸入框、發(fā)送按鈕在很多版本上捕獲不到這是和網(wǎng)頁(yè)自動(dòng)化最大的體驗(yàn)差異。捕獲不到就按這個(gè)降級(jí)順序來(lái)先試「深度模式捕獲新元素」很多普通模式捕獲不到的控件深度模式能拿下深度模式還不行用圖像操作相關(guān)指令「添加新圖像」截圖做識(shí)別模板圖像也不好使的用鍵盤快捷鍵替代這是最穩(wěn)的路快捷鍵在微信里覆蓋面驚人CtrlF喚起搜索、回車發(fā)送消息、CtrlV粘貼。我的群發(fā)流程里真正用到鼠標(biāo)點(diǎn)擊的只有搜索結(jié)果那一項(xiàng)其他全靠鍵盤穩(wěn)定性反而最好。鍵盤輸入指令支持組合快捷鍵比如模擬按下CtrlF這是驅(qū)動(dòng)模式的看家本領(lǐng)。消息群發(fā)完整流程拆解主流程骨架「打開Excel」讀客戶清單→ForEach列表循環(huán)遍歷每一行→循環(huán)體內(nèi)完成搜索聯(lián)系人→發(fā)送消息→跑完輸出統(tǒng)計(jì)。Excel表就兩列微信號(hào)或備注名、定制化的消息內(nèi)容。循環(huán)體內(nèi)的關(guān)鍵步驟先發(fā)CtrlF喚起微信搜索框→鍵盤輸入聯(lián)系人備注名→短暫等待搜索結(jié)果出現(xiàn)→回車或點(diǎn)擊第一條結(jié)果進(jìn)入聊天→填寫消息內(nèi)容→回車發(fā)送。輸入消息用「鍵盤輸入」而非模擬逐字打字大段文本快且不易出錯(cuò)。# 循環(huán)體偽代碼結(jié)構(gòu)在影刀畫布上按此順序擺放指令# 「ForEach列表循環(huán)」 data_listExcel讀出的客戶數(shù)據(jù)表# Try塊# 「模擬按鍵」CtrlF # 喚起微信搜索框# 「鍵盤輸入」循環(huán)項(xiàng)的聯(lián)系人名 # 搜索聯(lián)系人# 「等待」800毫秒 # 等搜索結(jié)果渲染別省# 「模擬按鍵」回車 # 選中第一條搜索結(jié)果# 「等待」500毫秒# 「鍵盤輸入」msg_text # 輸入消息內(nèi)容來(lái)自Excel# 「模擬按鍵」回車 # 發(fā)送# Catch塊# 「輸出日志」錯(cuò)誤發(fā)送失敗 聯(lián)系人名 異常信息# 失敗名字追加進(jìn) fail_list# 循環(huán)結(jié)束后「輸出日志」統(tǒng)計(jì)成功/失敗條數(shù)兩個(gè)節(jié)奏細(xì)節(jié)搜索后的等待必須給微信搜索有延遲不等就去發(fā)消息會(huì)發(fā)給上一個(gè)人——這是我真實(shí)翻過(guò)車的坑第一條消息發(fā)錯(cuò)了人從此等待指令一個(gè)不省。循環(huán)之間建議再加一秒左右的間隔連續(xù)高頻操作容易觸發(fā)客戶端卡頓。數(shù)據(jù)準(zhǔn)備客戶清單的變量處理群發(fā)的數(shù)據(jù)源就是一張ExcelA列聯(lián)系人備注名B列消息內(nèi)容?!复蜷_Excel」→「讀取區(qū)域」把數(shù)據(jù)讀成數(shù)據(jù)表變量再用「ForEach列表循環(huán)」遍歷。這里有個(gè)新手必踩的類型坑從Excel讀出來(lái)的單元格內(nèi)容有的是字符串有的被識(shí)別成數(shù)字比如A列 someone 備注名帶著數(shù)字后綴張三_1001沒(méi)事但B列如果內(nèi)容以數(shù)字開頭類型可能被轉(zhuǎn)成數(shù)字拼接進(jìn)消息時(shí)會(huì)帶出小數(shù)點(diǎn)或科學(xué)計(jì)數(shù)法。穩(wěn)妥做法是循環(huán)體內(nèi)點(diǎn)亮Python模式統(tǒng)一做一次字符串轉(zhuǎn)換和清洗# 輸入row_dataExcel讀取區(qū)域的一行數(shù)據(jù)# 輸出contact_name聯(lián)系人名、msg_text消息正文# str()強(qiáng)制轉(zhuǎn)字符串strip()去首尾空格和不可見(jiàn)字符contact_namestr(row_data[0]).strip()msg_textstr(row_data[1]).strip()# 消息內(nèi)容支持簡(jiǎn)單的變量占位Excel里寫{名字}發(fā)送前替換msg_textmsg_text.replace({名字},contact_name)占位符替換這個(gè)小技巧讓群發(fā)消息帶上稱呼張三你好比冷冰冰的統(tǒng)一文案回復(fù)率高得多成本只是Excel里多寫一個(gè){名字}。這也是為什么我一直建議把數(shù)據(jù)處理邏輯寫進(jìn)循環(huán)體開頭數(shù)據(jù)干凈了后面每一步才穩(wěn)。文件傳輸助手跨設(shè)備傳文件的自動(dòng)化文件傳輸助手的用法和群發(fā)同構(gòu)把搜索關(guān)鍵詞換成文件傳輸助手就進(jìn)了和它自己的聊天窗口之后發(fā)送文件。發(fā)送文件有兩條路第一條把文件路徑復(fù)制進(jìn)剪貼板聊天輸入框里CtrlV微信會(huì)自動(dòng)把文件變成可發(fā)送的附件卡片回車即發(fā)。這條路的指令組合是「設(shè)置剪貼板文本」加模擬按鍵CtrlV兼容性最好。第二條找聊天窗口的發(fā)送文件按鈕點(diǎn)擊彈出系統(tǒng)文件選擇對(duì)話框后在文件名輸入框里填路徑并回車。這條路的坑和網(wǎng)頁(yè)上傳對(duì)話框一樣路徑輸入方式可能失效必要時(shí)改用剪切板輸入。我的日?qǐng)?bào)自動(dòng)化就是這么搭的定時(shí)任務(wù)每晚十點(diǎn)跑流程生成日?qǐng)?bào)Excel→設(shè)置剪貼板文本放文件路徑→CtrlV到文件傳輸助手→回車發(fā)送。手機(jī)上立刻收到第二天通勤路上看儀式感十足但零人工。穩(wěn)定性與合規(guī)邊界最后說(shuō)兩句嚴(yán)肅的。技術(shù)上微信自動(dòng)化最大的不確定來(lái)自界面更新客戶端改版后圖像模板、按鈕位置都可能變所以圖像模板要用「添加新圖像」時(shí)截得小一點(diǎn)、特征明顯一點(diǎn)改版后重新截一次圖就能修復(fù)別把模板截得一大片。運(yùn)行策略上群發(fā)請(qǐng)控制頻率和數(shù)量加隨機(jī)間隔只發(fā)用戶明確愿意接收的內(nèi)容——批量營(yíng)銷消息既有賬號(hào)風(fēng)險(xiǎn)也不招人待見(jiàn)工具本身中立怎么用看你。流程封裝建議單聯(lián)系人的搜索發(fā)送拆成子流程主流程管Excel讀取、循環(huán)和日志參數(shù)傳聯(lián)系人名和消息內(nèi)容。以后要加群發(fā)圖片、發(fā)文件只在子流程里擴(kuò)展。易錯(cuò)速查表現(xiàn)象原因修復(fù)報(bào)獲取窗口失敗微信標(biāo)題隨新消息變動(dòng)通配符匹配標(biāo)題消息發(fā)錯(cuò)人搜索后未等待直接操作加等待發(fā)前核對(duì)窗口元素捕獲不到桌面整理/錄屏軟件干擾關(guān)閉后重試或深度模式CtrlV沒(méi)粘貼出文件剪貼板內(nèi)容被覆蓋粘貼前重新設(shè)置剪貼板延伸閱讀官方文檔里桌面軟件無(wú)法捕獲元素和獲取窗口失敗兩篇排錯(cuò)文檔與本文直接相關(guān)遇到捕獲問(wèn)題先翻它們「鼠標(biāo)鍵盤圖像自動(dòng)化」的課程里對(duì)圖像指令和快捷鍵模擬有系統(tǒng)講解做桌面自動(dòng)化前值得過(guò)一遍。完整流程源碼我放在代碼倉(cāng)庫(kù) home.linyan.cloud可以直接參考改造群發(fā)和文件傳輸助手兩個(gè)子流程都有Excel模板格式照著填就能跑。#影刀RPA #RPA自動(dòng)化 #桌面軟件自動(dòng)化 #微信 #鼠標(biāo)鍵盤圖像作者林焱