整理 | 小耕家的喵大仙
出品 | CSDN(ID:lichao19897314)
Q Q | 978124155
关联源码及工具下载
https://download.csdn.net/download/lichao19897314/90096681
往期知识回顾
👆😀以上文章是以往使用自动化方案操作微信的一些案例!如有兴趣请点击浏览!
因为文章可能无法满足读者要求,如需源码和支持请联系本人 QQ 978124155
本篇目标
一位做物流的朋友联系我说想抓取某些微信群中群成员的信息做后续的业务拓展,我这边经过研究发现基于UI自动化的技术是可以完美实现的。
需要实现连续抓取一个或者多个微信群中的群成员信息,并做相应的显示和存储功能。
软件效果
软件视频演示效果,有兴趣的可以观看下,更加直观清晰可能。
采集微信群群成员
通过下面微信某群的群成员列表截图和软件抓取的数据截图对比,发现获取的群成员数据和微信中一致无差别。
实现思路
(1)通过微信主面板搜索功能定位到某群的聊天界面。
(2)点击某群的聊天面板的聊天信息按钮,展开群的明细面板。
(3)寻找群的明细面板的查看更多按钮,如果存在则执行点击事件展开全部群成员。
(4)寻找群成员的listview的窗体互操作元素,遍历控件则能获取到全部信息。
技术细节
搜索指定群和联系人细节请参看(6)C#搜索指定微信通讯录联系人-微信UI自动化(.Net)
点击聊天面板的聊天信息按钮
private void ClickChatHistory()
{
var ele = UI_WX_Window.Current.Find("/Pane/Pane[1]/Pane/Pane/Pane/Pane[1]/Pane/Pane[3]/Pane[2]/Button");
UI_WX_Window.Current.ClickElement(ele);
}
寻找明细面板中的查看更多按钮
private bool ClickMore()
{
var more = UI_WX_Window.Current.FindGroup("/Pane[2]/Pane/Pane/Pane/Button[1]");
if (more != null && more.Name == "查看更多")
{
UI_WX_Window.Current.ClickElement(more);
return true;
}
return false;
}
寻找到群成员的listview控件元素,遍历控件则能获取到全部信息
/// <summary>
/// 开始采集
/// </summary>
public override void Start()
{
if (string.IsNullOrEmpty(GroupName))
{
throw new ArgumentNullException(nameof(GroupName));
}
State = Model.TaskState.Start;
base.Start();
State = Model.TaskState.Runing;
if (new UI_WX_SearchContract_Task().SearchContract(GroupName) == false)
return;
ClickChatHistory();
Thread.Sleep(600);
var isMore = ClickMore();
Thread.Sleep(600);
string listPath = "";
listPath = "/Pane[1]/Pane/Pane/Pane[2]/Pane/List";
var mainPane = UI_WX_Window.Current.FindGroup(mainPanePath);//主Panel
if (mainPane == null)
return;
var list = UI_WX_Window.Current.FindGroup(listPath);
foreach (var item in list.FindAllChildren())
{
contacts.Add(item.Name);
}
DoCompleted();
}
上一篇 (17)C#实现微信聊天文件接收及下载-微信UI自动化(.Net)https://blog.csdn.net/lichao19897314/article/details/136691715
因为文章可能无法满足读者要求,如需源码和支持请联系本人 QQ 978124155