999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UI Automation的桌面版微信自動化應用

2022-09-29 11:50:12楊恩波付瑞瀅鄒海東
中低緯山地氣象 2022年4期
關鍵詞:界面數據庫微信

楊恩波,張 祝,付瑞瀅,鄒海東

(1.貴州省銅仁市氣象局,貴州 銅仁 554300;2.貴州省銅仁市氣象防災減災中心,貴州 銅仁 554300;3.貴州省松桃苗族自治縣氣象局,貴州 松桃 554100)

0 引言

近年來新媒體技術的應用有效提高了政府部門間協作效率,同時在擴大公共氣象服務覆蓋面上發揮了重要作用。以微信為例,省、市、縣三級氣象部門通過加入其他職能部門工作交流群,可及時將服務信息發送到相關部門,對常規服務手段形成了有利補充[1];通過關注微信公眾號,公眾亦可及時有效地獲取氣象部門的權威預報及服務信息。貴州省氣象服務中心在2019年投入運行的微信機器人已實現將預警信號靶向發布至受影響地區的目標群,而常規預報、決策氣象服務材料等內容的發送仍依賴于各級氣象部門值班服務人員手動操作,面對服務對象較多的現狀,這一做法費時費力,且存在漏發的可能,如何提高服務效率是急需解決的問題。

目前針對微信公眾號的信息推送技術擁有微信官方的技術支持,但針對普通微信號的自動化技術受限制較多。有開發者利用網頁版微信開放協議[2]開發了相關微信自動化工具,但該方法不具備普適性,部分微信賬號特別是新申請的賬號無法使用網頁版微信開放協議;部分開發者使用其他相關通信協議實現了微信自動化功能,但使用方法未開源,且未獲得官方認可,存在一定違規風險。

本文介紹基于UI Automation技術[3-4](以下簡稱UIA)的桌面版微信軟件自動化的應用,實現對桌面版微信程序的控制,從而達到自動轉發文字類、文件類(含圖片)等信息的目的,減輕服務人員的工作壓力并提升工作效率,同時以12379網站為例介紹預警信息的獲取及入庫等關鍵步驟執行過程,以FTP方式為例介紹文件類信息的獲取及入庫過程。

1 關鍵技術介紹

本文所介紹的關鍵技術為通過UIA實現對桌面版微信程序的控制,從而達到使其自動執行指定操作的目的。UIA是由微軟公司開發的界面自動化測試框架,為技術人員提供通過編程控制Windows操作系統絕大多數程序界面元素的方法,從而實現模擬相關操作。該框架主要用于桌面程序編寫階段對界面穩定性進行測試,支持Win32應用程序、.NET Windows窗體應用程序和WPF應用程序。

為減小開發難度,利用Python語言開發,UIA采用封裝后的UI Automation模塊[3],界面使用PyQt5構建,使用SQLite輕型數據庫實現任務記錄及日志記錄等功能,數據庫讀寫使用Python自帶的sqlite3庫。使用Request庫實現12379網站預警信息獲取[5],使用FTPlib模塊實現文件類信息的獲取[6];消息發送過程中為提高執行速度借助Pyperclip模塊實現對剪貼板的控制[7]。

2 應用設計介紹

2.1 主要運行流程

如圖1所示,應用的主要運行流程為主進程依據時鐘定時連接SQLite數據庫,檢索是否存在待發消息,如果有則依據消息類型分別通過UIA操控桌面版微信執行不同的信息發送操作,并及時在數據庫中將發送完的消息標記為已執行。SQLite數據庫中的消息記錄由信息采集/入庫程序負責,該功能可集成于主程序中,通過多線程的方式開啟,也可使用獨立程序執行。

圖1 應用運行流程Fig.1 The logic diagram of the app

2.2 微信界面元素控制

桌面版微信界面中涉及自動控制的元素主要包含5個:主界面、搜索框、消息輸入框、打開文件按鈕、發送按鈕。使用UI Automation對桌面版微信軟件進行解析,經梳理后關鍵元素相關數據如表1所示。獲得相關元素數據后可通過指定程序根據控件的深度及控件名稱來查找控件的位置,并進行操作。

表1 微信軟件關鍵元素解析表Tab.1 The Analyzing result of WeChat's key elements

若要完成查找“銅仁氣象微信工作群”,并進入消息編輯界面,方法如下:

import uiautomation as auto

wechatWindow=auto.WindowControl(searchDepth=1,ClassName=′WeChatMainWndForPC′)

TargetName=‘銅仁氣象微信工作群’

wechatWindow.SendKeys(′{Ctrl}f′, waitTime=1.0)

search.SendKeys(TargetName, waitTime=1.0)

choice=wechatWindow.TextControl(searchDepth=12, Name=′′)

if choice.Exists(maxSearchSeconds=3):

choice.Click(simulateMove=False)

return True

else:

wechatWindow.SendKeys(′{Esc}′)

return False

若要在消息輸入框中輸入“天氣預報”4個字并發送,方法如下:

import uiautomation as auto

wechatWindow=auto.WindowControl(searchDepth=1,ClassName=′WeChatMainWndForPC′)

msg=“天氣預報”

edit=wechatWindow.TextControl(searchDepth=4) # 查找消息輸入框

edit.SendKeys(msg)

edit.SendKeys(′{Enter}′)

若要打開指定位置的雨量圖并發送,方法如下:

import uiautomation as auto

wechatWindow=auto.WindowControl(searchDepth=1,ClassName=′WeChatMainWndForPC′)

file_path=′D: ain.png′

sendfilebtn=wechatWindow.ButtonControl(searchDepth=14, Name=′發送文件′)

filepathinput=wechatWindow.EditControl(searchDepth=4, Name=′文件名(N):′)

fileopenbtn=wechatWindow.SplitButtonControl(Name=′打開(O)′)

sendfilebtn.Click(simulateMove=False)

filepathinput.SendKeys(′%s′ %file_path)

fileopenbtn.Click(simulateMove=False, waitTime=1.0)

edit.SendKeys(′{Enter}′)

在實際操作過程中可通過Pyperclip模塊將消息內容存儲在剪貼板中,同時利用發送快捷鍵(Ctrl+C/V)的方式提升執行速度及效率。

2.3 SQLite數據庫表設計

數據庫包含2張表,表名分別為Schedule(用于存儲消息記錄)和Log(用于存儲日志),表結構如表2、表3所示:

表2 Schedule表結構Tab.2 The structure of Schedule Table

表3 Log表結構Tab.3 The structure of Log Table

2.4 12379網站預警信息讀取

目前,各級氣象臺在國家突發事件預警信息發布系統中發布預警信號后,信息將逐級匯總到國家級服務器,同時在12379網站(www.12379.cn)上呈現,通過解析12379網站的alarm_list_all.html文件,將數據返回為json格式,然后逐一檢索每一條預警信號,判斷是否有指定地點氣象臺新發布的預警信號,方法如下:

alarmsite=′http://www.12379.cn/data/alarm_list_all.html′

alarmzone=‘銅仁市氣象臺’

def readalarm():

alarm=msgpara()[′alarmmsg′]

alarmjson=requests.get(alarmsite)

alarmjson.encoding=′utf-8′

alarmjson=json.loads(alarmjson.text)[′alertData′] # 舊的預警信號

i=0

while i

if alarmzone in alarmjson[i][′description′]:

alarm=(alarmjson[i][′description′])

break

else:

alarm=msgpara()[′alarmmsg′]

i=i+1

return alarm

取得需要入庫的預警信號文本內容后將其寫入SQLite數據庫Schedule表中即可,寫入時需指定好需要發布的對象,即表2中target字段。

2.5 FTP方式獲取文件類消息

在應用開發過程中,曾嘗試局域網共享及FTP服務器等2種方式獲取文件類消息,二者均可實現設計目標。綜合考慮網絡安全及銅仁市氣象臺業務環境等因素后,采取了FTP服務器作為唯一途徑。具體做法為:

①預報員將需要發布的文檔或圖片上傳到FTP服務器指定目錄;

②信息采集程序(主要使用FTPlib模塊)定時掃描FTP服務器中指定目錄,如果發現其中有文件,則將文件下載至本地,將本地路徑(對應表2中content字段)等信息寫入SQLite數據庫Schedule表中,同時刪除FTP服務器中的文件。

③主程序監測到文件類待發消息并執行完發送流程后,將本地文件刪除。

3 應用成效

基于本文所介紹方法開發的微信機器人軟件已在銅仁市氣象局正式投入運行。最新版本在完善文件類消息發送功能后于2021年4月下旬開始運行。截止目前共計向30余個黨政工作交流群及公眾氣象服務群轉發各類信息505條。其中文本類消息(含預警信號和1060121短信)209條,文檔類消息160條(主要是決策氣象服務材料),圖片類消息136條,在歷次重大天氣過程中第一時間為政府相關部門應對重大天氣過程提供了服務信息,同時為部分公眾提供日常氣象預報作為出行的參考。

4 結束語

本文介紹了基于UI Automation技術的桌面版微信自動化方法,為解決相關自動化需求提供了新的開發思路。該方法可解決因微信賬號權限無法使用網頁版微信開放協議的難題,同時避免使用第三方微信自動化閉源協議,安全性較高。需要注意的是該方法無法實現消息發送的并發,即需要向目標群或好友逐一發送。盡管執行效率低于基于網頁版API的相關工具,但相較于人工發送的方式已經有了很大提高,避免了漏發、誤發等問題,同時對微信賬號安全無影響。此外,該方法也可用于對值班人員的告警提醒,如在達到特定告警條件時,向值班人員撥打微信語音電話。

猜你喜歡
界面數據庫微信
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
微信
數據庫
財經(2017年2期)2017-03-10 14:35:35
人機交互界面發展趨勢研究
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
微信
微信
主站蜘蛛池模板: 免费视频在线2021入口| 免费一级全黄少妇性色生活片| 精品久久久久久成人AV| 亚洲综合九九| 亚洲男女在线| 欧美精品1区| 国产经典在线观看一区| 在线看AV天堂| 国产精品开放后亚洲| 麻豆精品在线播放| 国产高清自拍视频| 国产精品第一区在线观看| 亚洲精品视频在线观看视频| 精品成人免费自拍视频| 亚洲中文在线视频| 国产麻豆精品在线观看| 一区二区午夜| 免费人成网站在线观看欧美| 国产午夜无码专区喷水| 麻豆精品在线| 超级碰免费视频91| 亚洲天堂视频网站| 人妻中文字幕无码久久一区| 秋霞午夜国产精品成人片| 国产乱人伦AV在线A| 欧美性天天| 久久人人爽人人爽人人片aV东京热| 天天干天天色综合网| 一区二区三区成人| 精品欧美视频| 国产幂在线无码精品| 国内黄色精品| 午夜天堂视频| 精品无码一区二区三区电影| 91在线视频福利| 日本欧美一二三区色视频| 久久久波多野结衣av一区二区| 欧美97色| 国产又黄又硬又粗| 国产精品部在线观看| 激情爆乳一区二区| 成人a免费α片在线视频网站| 国产欧美一区二区三区视频在线观看| jizz在线免费播放| 亚洲精品无码AV电影在线播放| 在线播放精品一区二区啪视频| 午夜毛片免费观看视频 | 99re精彩视频| 亚洲国产高清精品线久久| 久久网综合| 国产v欧美v日韩v综合精品| 久久www视频| 国产成人亚洲日韩欧美电影| 国产精品亚洲五月天高清| 日韩一区二区三免费高清| 手机在线国产精品| 亚洲国产成熟视频在线多多| 久久人搡人人玩人妻精品一| 国产99精品视频| 国产波多野结衣中文在线播放| 97视频免费看| 老色鬼欧美精品| 青青青视频免费一区二区| 在线观看精品自拍视频| 日本成人福利视频| 亚洲综合18p| 成人久久精品一区二区三区| 精品综合久久久久久97超人该| 国产正在播放| 51国产偷自视频区视频手机观看| 国产91av在线| 久久国产香蕉| 欧美第一页在线| 91色国产在线| 中文字幕亚洲无线码一区女同| 黄片在线永久| 亚洲天堂自拍| 91精品专区国产盗摄| 日韩精品免费一线在线观看 | 最新亚洲av女人的天堂| 国产视频一区二区在线观看| 国内自拍久第一页|