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
微信
微信
主站蜘蛛池模板: 免费看久久精品99| 狠狠躁天天躁夜夜躁婷婷| 国产剧情一区二区| 毛片在线区| 久久青草精品一区二区三区| 青青草原国产av福利网站| 亚洲中字无码AV电影在线观看| 亚洲欧美成aⅴ人在线观看 | 天堂网亚洲综合在线| 第一区免费在线观看| 另类欧美日韩| 又粗又大又爽又紧免费视频| 伊人激情综合| 久久99国产乱子伦精品免| 日韩精品视频久久| 国产成人精品高清在线| 69av在线| 成年看免费观看视频拍拍| 国产成人综合久久精品下载| 日韩一区精品视频一区二区| 手机在线免费不卡一区二| 五月天婷婷网亚洲综合在线| 曰韩人妻一区二区三区| 亚洲成人播放| 久久这里只有精品免费| 浮力影院国产第一页| 欧美日韩精品一区二区在线线| 免费不卡视频| 国产区在线看| 在线99视频| 欧美人在线一区二区三区| 中国黄色一级视频| 91激情视频| 亚洲色欲色欲www在线观看| 一级毛片在线播放| 99久久国产精品无码| 波多野结衣在线se| 国产经典三级在线| 丁香六月综合网| 美女一级毛片无遮挡内谢| 亚洲综合专区| 人妻精品全国免费视频| 992tv国产人成在线观看| 欧美国产日产一区二区| 毛片在线看网站| 综合色亚洲| 精品无码国产一区二区三区AV| 久久精品国产999大香线焦| 国产成人1024精品下载| 91精品网站| 欧洲高清无码在线| 亚洲精品大秀视频| 久久国产精品嫖妓| 国产靠逼视频| 国产91成人| 一本大道香蕉中文日本不卡高清二区 | 国产人免费人成免费视频| 国产特一级毛片| 日本中文字幕久久网站| 四虎精品国产AV二区| 青青青亚洲精品国产| 久久精品国产精品国产一区| 嫩草国产在线| 国产欧美日韩视频一区二区三区| 免费无码网站| 色亚洲成人| 欧美成人精品高清在线下载| 久久国产亚洲偷自| 日韩欧美中文| 国产精品hd在线播放| 日本一本在线视频| 精品视频一区二区三区在线播| 亚洲色图欧美视频| 国产成人在线无码免费视频| 大学生久久香蕉国产线观看| 国产福利影院在线观看| 波多野结衣一区二区三视频 | www.91在线播放| 婷婷成人综合| 欧美天天干| 成年人国产视频| 高清乱码精品福利在线视频|