如何用Python+Appium实现自动抢微信红包
本文小编为大家详细介绍“如何用Python+Appium实现自动抢微信红包”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何用Python+Appium实现自动抢微信红包”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
环境准备appium环境
安卓手机
usb数据线
python环境
实现思路我们收到红包和消息都是自动置顶到第一个,于是我们打开第一个判断是否有红包,没有则隐藏此窗口。如果有则判断红包是否可以领取,如果有则领取红包,否则删除此红包(不然会影响后面的判断)
然后再进行循环运行和判断。
首先看一下配置信息,因为我使用得是真机小米9安卓10的系统,代码实现如下具体的信息填写请根据自己的真实情况修改:
desired_caps={"platformName":"Android",#系统"platformVersion":"10.0",#系统版本号"deviceName":"b68548ed",#设备名"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:returnTrue
因为红包无论是被自己领取还是被他人领取,之后都要删除领取后的红包记录,所以我们再来定义一个删除已领取红包的方法,代码实现如下:
defdel_red_envelope(wait,driver):#长按领取过的红包r8=wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ahs")))TouchAction(driver).long_press(r8).perform()time.sleep(1)#点击长按后显示的删除wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/dt5"))).click()#点击弹出框的删除选项wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp"))).click()
同时有可能第一个是公众号推送的消息,这样会导致无法判断,所以我们判断只要进去的里面没有红包就把它隐藏掉,然后等新的红包发生过来。
#删除第一个聊天框defdel_red_public(wait,driver):#长按第一个聊天框r8=wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/fzg")))TouchAction(driver).long_press(r8).perform()time.sleep(1)#点击长按后显示的删除wait.until(EC.element_to_be_clickable((By.XPATH,"//android.widget.TextView[@text='不显示该聊天']"))).click()#点击弹出框的删除选项wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp"))).click()
完整代码如下:
fromappiumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromappium.webdriver.common.touch_actionimportTouchActionfromselenium.webdriver.supportimportexpected_conditionsasECimporttimedesired_caps={"platformName":"Android",#系统"platformVersion":"10.0",#系统版本号"deviceName":"b68548ed",#设备名"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:returnTrue#删除领取后的红包记录defdel_red_envelope(wait,driver):#长按领取过的红包r8=wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ahs")))TouchAction(driver).long_press(r8).perform()time.sleep(1)#点击长按后显示的删除wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/dt5"))).click()#点击弹出框的删除选项wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp"))).click()#删除第一个聊天框defdel_red_public(wait,driver):#长按第一个聊天框r8=wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/fzg")))TouchAction(driver).long_press(r8).perform()time.sleep(1)#点击长按后显示的删除wait.until(EC.element_to_be_clickable((By.XPATH,"//android.widget.TextView[@text='不显示该聊天']"))).click()#点击弹出框的删除选项wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp"))).click()if__name__=='__main__':driver=webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)#设置等待wait=WebDriverWait(driver,500)whileTrue:#进入第一个聊天窗口g73=wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/fzg")))g73.click()print("进入了第一个聊天窗口")#判断聊天窗是否是公众号is_weichat=is_element_exist(driver,"id","com.tencent.mm:id/u1")ifis_weichat==True:#whileTrue:#有红包则点击wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/u1"))).click()print("点击了红包")#判断红包是否被领取is_open=is_element_exist(driver,"id","com.tencent.mm:id/f4f")print("红包是否被领取:",is_open)ifis_open==True:#红包未被领取,点击开红包wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/f4f"))).click()print('已经领取红包')#返回群聊driver.keyevent(4)#删除领取过的红包记录del_red_envelope(wait,driver)print('···删除已经领取的红包,等待新的红包')driver.keyevent(4)else:#返回群聊driver.keyevent(4)#删除领取过的红包记录del_red_envelope(wait,driver)print('···删除无法领取的红包,等待新的红包')driver.keyevent(4)else:print('没有红包则隐藏此聊天框')#返回群聊driver.keyevent(4)#删除第一个公众号窗口del_red_public(wait,driver)print('隐藏了第一个聊天框')
读到这里,这篇“如何用Python+Appium实现自动抢微信红包”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。