Python如何扫描微信非好友名单
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本篇内容主要讲解"Python如何扫描微信非好友名单",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python如何扫描微信非好友名单"吧!准备1.Appi
千家信息网最后更新 2024年11月26日Python如何扫描微信非好友名单
本篇内容主要讲解"Python如何扫描微信非好友名单",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python如何扫描微信非好友名单"吧!
准备
1.Appium环境搭建
2.手动操作流程图转自动操作流程图
遇到暂停基本是聊天窗识别不到了,可以手动上滑一下,让程序识别下一个聊天窗口。需要先登陆微信号。
代码
from appium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timefrom selenium.common.exceptions import StaleElementReferenceException# platformVersion = input('系统版本号(platformVersion): ')# deviceName = input('设备名称(deviceName):')desired_caps = { "platformName": "Android", # 系统 "platformVersion": '10.0', # 系统版本号 # "platformVersion": platformVersion, # 系统版本号 "deviceName": 'b68548ed', # 设备名 # "deviceName": deviceName, # 设备名 "appPackage": "com.tencent.mm", # 包名 "appActivity": ".ui.LauncherUI", # app 启动时主 Activity 'unicodeKeyboard': True, # 使用自带输入法 'noReset': True # 保留 session 信息,可以避免重新登录}def is_element_exist(driver, by, value): """判断元素是否存在""" try: driver.find_element(by=by, value=value) except Exception as e: return False else: return Truedef break_key(n): """点击返回按钮""" for i in range(n): el1 = wait.until(EC.element_to_be_clickable((By.ACCESSIBILITY_ID,"返回"))) el1.click()def swipe_up(): """向上滑动屏幕""" # 获取屏幕的size size = driver.get_window_size() # 获取屏幕宽度 width width = size['width'] # 获取屏幕高度 height height = size['height'] x1 = width*0.5 y1 = height*0.45 y2 = height*0.3 driver.swipe(x1,y1,x1,y2,3000) print("向上滑动") if __name__ == '__main__': driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) # 设置等待 wait = WebDriverWait(driver, 300) status = True n = 2 count = 1 while status: try: # 点击通讯录 a1 = wait.until(EC.element_to_be_clickable( (By.XPATH, "//android.widget.FrameLayout[@content-desc="当前所在页面,与的聊天"]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView"))) a1.click() #向上滑动 swipe_up() if n < 13: # 进入第一个聊天窗口,公众号为1,用户元素定位从2开始,一页最多12,每滑动屏幕从新开始到12. g73 = wait.until(EC.element_to_be_clickable( (By.XPATH, "//android.widget.FrameLayout[@content-desc='当前所在页面,与的聊天']/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/com.tencent.mm.ui.mogic.WxViewPager/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.LinearLayout[%d]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.view.View"%(n)))) g73.click() print("进入了第%d个好友聊天窗口"%(count)) count += 1 else: n -= 1 g73 = wait.until(EC.element_to_be_clickable( (By.XPATH, "//android.widget.FrameLayout[@content-desc='当前所在页面,与的聊天']/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/com.tencent.mm.ui.mogic.WxViewPager/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.LinearLayout[%d]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.view.View"%(n)))) g73.click() print("进入了第%d个好友聊天窗口"%(count)) count += 1 # 判断聊天窗是否有发送消息的元素 is_weichat = is_element_exist(driver, "id", "com.tencent.mm:id/ijq") if is_weichat == True: while True: # # 有发消息则点击 wait.until(EC.element_to_be_clickable( (By.ID, "com.tencent.mm:id/ijq"))).click() print("点击了发消息") #点击+号 is_jia = is_element_exist(driver, 'id', 'com.tencent.mm:id/ay7') #判断是否有加号 if is_jia == True: el4 = wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/ay7"))) el4.click() print('点击+号') #判断是否为转账 is_zhuanzhang = wait.until(EC.element_to_be_clickable((By.XPATH,"//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.GridView/android.widget.LinearLayout[6]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView"))) if is_zhuanzhang.text == "转账": # is_zhuanzhang = is_element_exist(driver, 'xpath', '//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.GridView/android.widget.LinearLayout[6]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView') # if is_zhuanzhang == True: #点击转账 el5 = wait.until(EC.element_to_be_clickable((By.XPATH,"//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.GridView/android.widget.LinearLayout[6]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView[2]"))) el5.click() print('点击转账') #输入金额0.01 el6 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/jf4"))) el6.send_keys("0.01") print('输入金额') #点击确认转账 el7 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/e6c"))) el7.click() print('点击确认转账') time.sleep(2) #判断是否有知道了 is_not_friend = is_element_exist(driver,'id','com.tencent.mm:id/ffp') if is_not_friend == True: #点击知道了 el8 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp"))) el8.click() print('点击知道了') #获取用户名称并打印 el9 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/h3k"))) print('不是好友的微信名称为:',el9.text) with open('weixin.txt','a+')as f: f.write('不是好友的微信名称:' + el9.text + '') driver.keyevent(4) driver.keyevent(4) driver.keyevent(4) driver.keyevent(4) print('返回') n += 1 break else: #没有知道则返回 driver.keyevent(4) break_key(2) n += 1 print('返回') break else: #没有转账则返回到首页 driver.keyevent(4) driver.keyevent(4) print('返回') n += 1 break else: #没有+号则返回到首页 driver.keyevent(4) driver.keyevent(4) print('返回') n += 1 break except StaleElementReferenceException: print('捕获StaleElementReferenceException异常')
到此,相信大家对"Python如何扫描微信非好友名单"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
好友
转账
屏幕
系统
名单
元素
名称
所在
消息
版本
设备
页面
输入
内容
天窗
手动
流程
流程图
用户
金额
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
黄浦区基础网络技术服务
北京前端软件开发价格
传统数据库和列族数据库的对比
库存管理软件开发难度
锦江区北卫网络技术咨询部
东数西算服务器概念龙头
网络安全口令解读
海康流媒体服务器网络连接图
山西正规软件开发价格
戴尔r720服务器卡住
软件开发人工成本分配至项目
服务器ip防护登录
文件 网络安全紧急预案
河北唐山软件开发培训学校
数据库表分析目的
php 安全数据库 函数
做一个网站用服务器吗
网络安全教具
开机启动服务器管理器
医疗混合现实技术软件开发
明轩圆梦互联网科技有限公司
我的世界网易服务器文件夹
电脑中数据库引擎找不到对象
软件开发自主率
软件开发组长聚会带动气氛
打码服务器
阿里云服务器 终端管理
国产软件开发的重要性
红包控制软件开发
dns服务器相同代表什么