Python如何扫描微信非好友名单
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,本篇内容主要讲解"Python如何扫描微信非好友名单",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python如何扫描微信非好友名单"吧!准备1.Appi
千家信息网最后更新 2024年11月15日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安全错误
数据库的锁怎样保障安全
戴尔服务器怎么进去安全启动菜单
c 数据库映射类
北京小张网络技术公司
互联网科技公司行业背景
随着科技和互联网的发展翻译
小型公司数据库
社区网络安全工作责任整改
流放者柯南云服务器
泽普县网络安全周
新时期网络技术
电子信息网络技术论文
华为2288h服务器管理口登录
数据库集群和存储的关系
服务器磁盘查看的命令
查看服务器连接
绝地求生服务器eu
vps云服务器文件
什么是计算机服务器
网络安全做不好有什么后果
呱呱阅读软件开发
sap b1 数据库
浦东新区网络技术服务价格查询
抚顺市盘古网络技术有限公司
服务器上有本地用户管理
国内的数据网络安全怎么样
网站500m数据库够用吗
李斌 西电 软件开发
网络安全和保密隐患自查报告
控制类软件开发技术
数据库日志文件损坏怎么恢复