本篇内容主要讲解“Python如何扫描微信非好友名单”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何扫描微信非好友名单”吧!

准备

1.Appium环境搭建

2.手动操作流程图转自动操作流程图

遇到暂停基本是聊天窗识别不到了,可以手动上滑一下,让程序识别下一个聊天窗口。需要先登陆微信号。

代码

fromappiumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECimporttimefromselenium.common.exceptionsimportStaleElementReferenceException#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信息,可以避免重新登录}defis_element_exist(driver,by,value):"""判断元素是否存在"""try:driver.find_element(by=by,value=value)exceptExceptionase:returnFalseelse:returnTruedefbreak_key(n):"""点击返回按钮"""foriinrange(n):el1=wait.until(EC.element_to_be_clickable((By.ACCESSIBILITY_ID,"返回")))el1.click()defswipe_up():"""向上滑动屏幕"""#获取屏幕的sizesize=driver.get_window_size()#获取屏幕宽度widthwidth=size['width']#获取屏幕高度heightheight=size['height']x1=width*0.5y1=height*0.45y2=height*0.3driver.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=Truen=2count=1whilestatus: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()ifn<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+=1else:n-=1g73=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")ifis_weichat==True:whileTrue:##有发消息则点击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')#判断是否有加号ifis_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")))ifis_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')#ifis_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.01el6=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')ifis_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)withopen('weixin.txt','a+')asf:f.write('不是好友的微信名称:'+el9.text+'')driver.keyevent(4)driver.keyevent(4)driver.keyevent(4)driver.keyevent(4)print('返回')n+=1breakelse:#没有知道则返回driver.keyevent(4)break_key(2)n+=1print('返回')breakelse:#没有转账则返回到首页driver.keyevent(4)driver.keyevent(4)print('返回')n+=1breakelse:#没有+号则返回到首页driver.keyevent(4)driver.keyevent(4)print('返回')n+=1breakexceptStaleElementReferenceException:print('捕获StaleElementReferenceException异常')

到此,相信大家对“Python如何扫描微信非好友名单”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!