人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Python自動掃描出微信不是好友名單的方法

發(fā)布日期:2022-06-08 14:54 | 文章來源:腳本之家

最近找?guī)讉€老友準(zhǔn)備聊天發(fā)現(xiàn)幾個已經(jīng)被刪除好友名單,做為潛水黨多年的我已經(jīng)不知道成為多少人的黑名單,但是好友列表卻依然有不是好友的名單,面對龐大的好友數(shù)量想要清除談何容易。雖然可以發(fā)消息給所有人,來識別是否是好友,但是畢竟打擾到了其他人,經(jīng)過一番查詢發(fā)現(xiàn)點(diǎn)擊轉(zhuǎn)賬時會提示不是好友,這里只是點(diǎn)擊轉(zhuǎn)賬并不是真的轉(zhuǎn)賬哦。做為一名技術(shù)潛水黨,肯定要低調(diào)的辦好事情。之前已經(jīng)用appium玩過自動化了,那么這次就輕車熟路了。

準(zhǔn)備

1.Appium環(huán)境搭建
環(huán)境搭建這里不再介紹,需要的可以看我之前的文章或者百度
2.手動操作流程圖轉(zhuǎn)自動操作流程圖


最開始畫的流程圖,然后按照流程圖去實(shí)現(xiàn)操作流程和邏輯。初步實(shí)現(xiàn)完成后進(jìn)行調(diào)試,過程中不少邏輯不嚴(yán)謹(jǐn)?shù)牡胤?,以及一些框架自帶的坑,最終總算可以一次性掃描了。但是其中還是存在個別的坑需要手動處理一下。暫時先記錄下來,等以后看情況優(yōu)化吧。
遇到暫停基本是聊天窗識別不到了,可以手動上滑一下,讓程序識別下一個聊天窗口。需要先登陸微信號。

代碼

from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.common.exceptions import StaleElementReferenceException
# platformVersion = input('系統(tǒng)版本號(platformVersion): ')
# deviceName = input('設(shè)備名稱(deviceName):')

desired_caps = {
 "platformName": "Android",  # 系統(tǒng)
 "platformVersion": '10.0',  # 系統(tǒng)版本號
 # "platformVersion": platformVersion,  # 系統(tǒng)版本號
 "deviceName": 'b68548ed',  # 設(shè)備名
 # "deviceName": deviceName,  # 設(shè)備名
 "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 True

def break_key(n):
 """點(diǎ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)
 # 設(shè)置等待
 wait = WebDriverWait(driver, 300)
 status = True
 n = 2
 count = 1
 while status:
  try:
# 點(diǎn)擊通訊錄
a1 = wait.until(EC.element_to_be_clickable(
 (By.XPATH, "http://android.widget.FrameLayout[@content-desc=\"當(dāng)前所在頁面,與的聊天\"]/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:
 # 進(jìn)入第一個聊天窗口,公眾號為1,用戶元素定位從2開始,一頁最多12,每滑動屏幕從新開始到12.
 g73 = wait.until(EC.element_to_be_clickable(
  (By.XPATH, "http://android.widget.FrameLayout[@content-desc='當(dāng)前所在頁面,與的聊天']/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("進(jìn)入了第%d個好友聊天窗口"%(count))
 count += 1
else:
 n -= 1
 g73 = wait.until(EC.element_to_be_clickable(
  (By.XPATH, "http://android.widget.FrameLayout[@content-desc='當(dāng)前所在頁面,與的聊天']/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("進(jìn)入了第%d個好友聊天窗口"%(count))
 count += 1
# 判斷聊天窗是否有發(fā)送消息的元素
is_weichat = is_element_exist(driver, "id", "com.tencent.mm:id/ijq")
if is_weichat == True:
 while True:
#  # 有發(fā)消息則點(diǎn)擊
  wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/ijq"))).click()
  print("點(diǎn)擊了發(fā)消息")
  #點(diǎn)擊+號
  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('點(diǎn)擊+號')#判斷是否為轉(zhuǎn)賬is_zhuanzhang = wait.until(EC.element_to_be_clickable((By.XPATH,"http://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 == "轉(zhuǎn)賬":# 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:
#點(diǎn)擊轉(zhuǎn)賬
el5 =  wait.until(EC.element_to_be_clickable((By.XPATH,"http://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('點(diǎn)擊轉(zhuǎn)賬')
#輸入金額0.01
el6 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/jf4")))
el6.send_keys("0.01")
print('輸入金額')
#點(diǎn)擊確認(rèn)轉(zhuǎn)賬
el7 =  wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/e6c")))
el7.click()
print('點(diǎn)擊確認(rèn)轉(zhuǎn)賬')
time.sleep(2)
#判斷是否有知道了
is_not_friend = is_element_exist(driver,'id','com.tencent.mm:id/ffp')
if is_not_friend == True:
#點(diǎn)擊知道了
 el8 =  wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp")))
 el8.click()
 print('點(diǎn)擊知道了')
 #獲取用戶名稱并打印
 el9 =  wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/h2k")))
 print('不是好友的微信名稱為:',el9.text)
 with open('weixin.txt','a+')as f:
  f.write('不是好友的微信名稱:' + el9.text + '\n')
 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('返回')
 breakelse:
#沒有轉(zhuǎn)賬則返回到首頁
driver.keyevent(4)
driver.keyevent(4) 
print('返回')
n += 1
break
  else:#沒有+號則返回到首頁driver.keyevent(4)driver.keyevent(4)print('返回')n += 1break
  except StaleElementReferenceException:
print('捕獲StaleElementReferenceException異常')  

這里已經(jīng)掃描到200多個好友了,其中可能需要手動上滑一下


不是好友的名單會在當(dāng)前目錄生成一個txt文件進(jìn)行保存


偶然出現(xiàn)幾個異常,不知道是什么原因


總的來說功能基本都已經(jīng)實(shí)現(xiàn)了,還有細(xì)節(jié)問題后面看情況優(yōu)化吧

到此這篇關(guān)于Python自動掃描出微信不是好友名單的方法的文章就介紹到這了,更多相關(guān)Python自動掃描出微信好友內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國快速服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部