(20)批量将微信群成员添加为好友-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙

出品 | CSDN(ID:lichao19897314)

Q Q | 978124155

往期知识回顾

(1)C#开启探索微信自动化之路-微信UI自动化

(2)C#创建微信窗体自动化实例-微信UI自动化

(3)C#针对系统热键管理-微信UI自动化

(4)C#采集微信通讯录和联系人-微信UI自动化

(5)C#实现针对微信窗体鼠标静默点击-微信UI自动化

(6)C#搜索微信通讯录联系人-微信UI自动化

(7)C#实现微信消息群发-微信UI自动化

(8)C#监控微信进程运行状态-微信UI自动化

(9)C#监控微信网络连接状态-微信UI自动化

(11)C#实现微信窗体尺寸跟随调整-微信UI自动化

(12)C#采集微信聊天记录及历史消息-微信UI自动化

(13)C#实现自动回复微信消息-微信UI自动化

(14)C#针对微信界面元素截图操作-微信UI自动化

(15)C#实现对微信窗体的行为管控-微信UI自动化

(16)C#实现微信多开-微信UI自动化

(17)C#实现微信聊天文件接收及下载-微信UI自动化

(18)C#采集微信群成员信息-微信UI自动化(.Net)

(19)C#添加微信好友(可批量添加)--微信UI自动化(.Net)

👆😀以上文章是以往使用自动化方案操作微信的一些案例!如有兴趣请点击浏览!

因为文章可能无法满足读者要求,如需源码和支持请联系本人 QQ 978124155 

本篇目的

   近期一位做某行业微信私域运营的朋友联系我,说他有很多某行业的微信群,在这些微信群里面有些群成员并不是他的好友,所有他想将不是他好友的群成员全部发送好友请求添加至他的微信好友中,所以他求助到我说解决这个问题,我分析了下他的场景, 一共有20多个微信群,每个微信群大概约400人,所有要手动检查和添加是一个巨大的工作量。

   经过对需求的分析,发现只要获取到对应20个群中的群成员所有信息,这个已经在博客中实现 (18)C#采集微信群成员信息-微信UI自动化(.Net),然后在对应的群中做群成员搜索点击结果列表中的群成员头像,会弹出一个对应群成员用户信息的面板,用户信息面板会包含一些信息,其中就包括如果你是他好友则会出现“发消息”这类的元素,如果出现“添加至通讯录”这类的元素则代表该群成员不是你的好友,执行添加好友操作即可。

软件视频及截图

   各位朋友如果时间允许可观看视频直观感受下添加微信群成员为好友的执行过程,更加直观清晰,本人将自动化速度调节的慢些,以便更加清晰的感受到自动化带来的魅力。

添加群成员为好友

因为是测试环境,所有我这里只用一个群成员比较少群做测试,大概13个人。

经过等待,得出添加群成员为好友的结果列表,发现准备率是很高的,非好友的群成员已经全部成功发送好友成功。

实现思路
  1. 通过主面板的“搜索框”功能搜索定位到某个群的聊天面板。
  2. 点击聊天面板的“聊天信息”按钮,展开本群的详情面板。
  3. 定位到群详情面板的“搜索框”元素,输入某位群成员的昵称得出搜索结果,如果没有搜索结构则停止该群成员添加任务的执行,重新执行下一位操作。
  4. 发现搜索成功则执行该群成员UI元素的点击事件,弹出群成员的信息面板。
  5. 通过检索群成员信息面板中的信息,发现如果存在“添加至通讯录”按钮则代表该群成员还不是你的好友,执行下一步,如果未发现该按钮则代表该群成员在你的好友列表中。
  6. 执行“添加至通讯录按钮”,弹出“申请添加朋友”窗体。
  7. 在“申请添加朋友”窗体寻找到“发送添加朋友申请”,“备注名”,“标签”,“确定”等UI元素。
  8. 发送添加朋友申请”,“备注名”为文本框,直接设置文本值即可。
  9. “标签”为复选框集合面板,如果发现最后一个元素对象为Button,则代表有更多的标签,需要执行点击展开,展开后在复选框集合面板中寻找对应的标签控件,执行点击事件将该好友设置成对应的标签。
  10. 最后执行“确定”按钮点击事件,发送好友申请,执行下一轮等待操作后继续添加,因为不等待直接操作微信会提示操作频繁。
参考文章

(18)C#采集微信群成员信息-微信UI自动化(.Net)

(19)C#添加微信好友(可批量添加)--微信UI自动化(.Net)

技术细节

点击群主面板的聊天信息按钮

		/// <summary>
		/// 点击联系人面板的聊天信息按钮
		/// </summary>
		private bool ClickChatHistory()
		{
			var ele = UI_WX_Window.Current.Find("/Pane/Pane[1]/Pane/Pane/Pane/Pane[1]/Pane/Pane[3]/Pane[2]/Button");
            if (ele != null) { 
		     	UI_WX_Window.Current.ClickElement(ele);
                return true;
			}
            return false;
		}

获取群搜索文本框路径 

/// <summary>
/// 群面板搜索控件
/// </summary>
/// <returns></returns>
private bool FocusSearchGroupPanel()
{
	var ele = UI_WX_Window.Current.FindGroup("/Pane[1]/Pane/Pane/Pane/Pane/Pane[1]");
 
	if (ele != null)
	{
		Log.SystemLog.Info("群成员面板管理:群成员搜索框寻找成功,执行点击事件");
		ele.DoubleClick();
		return true;
	}
	else
	{
		Log.SystemLog.Error("群成员面板管理:群成员搜索框寻找失败");
		return false;

	}
}

 添加群成员为好友

 /// <summary>
 /// 添加群成员到好友
 /// </summary>
 /// <param name="contact"></param>
 private void AddGroupContract(AddWeChatFriendEntity contact)
 {
		Thread.Sleep(800);
     if (!FocusSearchGroupPanel())
     {
         contact.Log = "寻找群搜索文本框UI元素失败";

			return;
     }
     Thread.Sleep(400);

     UI_WX_Window.Current.ClearInput();

     WXUIAuto.Currnet.Invoke(new Action(() =>
     {
         new Model.WeChatInputMsgEntity
         {
             Type = Model.WXMessageType.Text,
             Info = contact.Name
         }.Copy();

         UI_WX_Window.Current.Paste();
     }));

     Log.SystemLog.Info("群成员面板管理:粘贴["+contact+"]信息成功");

     Thread.Sleep(400);//等待粘贴后结果
     var list = UI_WX_Window.Current.FindGroup("/Pane[2]/Pane/Pane/Pane/Pane[1]/Pane");///ListItem
     if (list != null && list.FindAllChildren().Count() > 0)
     {
         //list.Focus();   
         list.Click();
         Log.SystemLog.Info("群成员面板管理:执行联系人面板点击成功");
         list = UI_WX_Window.Current.FindGroup("/Pane[2]/Pane/Pane/Pane/Pane[2]/Pane/ListItem");//
         list.Click();
         Log.SystemLog.Info("群成员面板管理:执行"+contact+"框点击成功");

         var addFriend = UI_WX_Window.Current.Window.FindFirstByXPath("/Pane[1]/Pane[1]/Pane[1]/Pane/Pane/Pane/Pane[2]/Pane[2]/Button");
         if (addFriend == null)
         {
				contact.Log = "该微信已经为您的好友";
				Log.SystemLog.Error("添加到通讯录按钮寻找失败");
             ClickChatHistory();

			}
         else
         {
             addFriend.Click();
             Log.SystemLog.Info("群成员面板管理:执行添加到通讯录按钮点击事件成功");
             Thread.Sleep(400);
             this.SendAddFriendRequest(contact);
         }
     }
     else
     {
			contact.Log = "寻找当前群成员结果List元素失败";
			Log.SystemLog.Error("路径查找失败");
     }
 }

因为文章可能无法满足读者要求,如需源码和支持请联系本人 QQ 978124155 

上一篇 (19)C#添加微信好友(可批量添加)--微信UI自动化(.Net)icon-default.png?t=N7T8https://blog.csdn.net/lichao19897314/article/details/136899889

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小耕家的喵大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值