app小程序手机端Python爬虫实战11实现自动化退出考研帮app并清空缓存
一、捕获安卓吐司的消息
结束安卓的吐司操作:
while True:
if self.d.toast.get_message(0)=="没有更多了":
break
self.d.swipe(x1, y1, x1, y2)
二、脚本结束时清理缓存
完成之后清理app的缓存:
def close_app(self):
#监控器关闭
self.d.watcher.stop()
#停止考研帮app
self.d.app_stop("com.tal.kaoyan")
# 清理缓存
self.d.app_clear("com.tal.kaoyan")
在吐司操作完成后,结束app
while True:
if self.d.toast.get_message(0)=="没有更多了":
self.close_app()
return
self.d.swipe(x1, y1, x1, y2)
三、考研帮脚本完整代码
完整代码如下:
import uiautomator2 as u2
import time
class HandleKaoyanbang(object):
def __init__(self, serial="127.0.0.1:62001"):
# 当前是通过usb的方法来街道移动设备的
self.d = u2.connect_usb(serial=serial)
self.size = self.get_windowsize()
self.handle_watcher()
def handle_watcher(self):
"""定义一个监控器:会单独启动一个线程来监控有没有符合要求的控件"""
# 用户隐私协议
self.d.watcher.when('//*[@resource-id="com.tal.kaoyan:id/tip_commit"]').click()
# 广告
self.d.watcher.when('//*[@resource-id="com.tal.kaoyan:id/tv_skip"]').click()
# 监控器写好之后 通过start方法启动
self.d.watcher.start()
def get_windowsize(self):
"""获取手机屏幕的大小"""
return self.d.window_size()
def close_app(self):
#监控器关闭
self.d.watcher.stop()
#停止考研帮app
self.d.app_stop("com.tal.kaoyan")
# 清理缓存
self.d.app_clear("com.tal.kaoyan")
def handle_kaoyanbang_app(self):
"""启动考研帮app,并实现自动化操作"""
self.d.app_start(package_name="com.tal.kaoyan")
# 点击密码登录
self.d(text="密码登录").click_exists(timeout=10)
# 输入用户名(文本控件-用set_text输入文字)
self.d(resourceId="com.tal.kaoyan:id/login_email_edittext").set_text("12121212")
# 输入password
self.d(resourceId="com.tal.kaoyan:id/login_password_edittext").set_text("1121212")
# 点击登录
self.d(resourceId="com.tal.kaoyan:id/login_login_btn").click()
# 等待页面出现(在10秒内,如果这个页面出现了,我们就进入下一步操作,
if (self.d.wait_activity("com.tal.kaoyan.ui.activity.HomeTabActivity", timeout=10)):
# 点击社区
self.d(text="社区").click_exists(timeout=10)
# 获取到屏幕的坐标
x1 = int(self.size[0] * 0.5)
y1 = int(self.size[1] * 0.9)
y2 = int(self.size[1] * 0.15)
while True:
if self.d.toast.get_message(0)=="内同已经全部加载完了":
close_app()
return
self.d.swipe(x1, y1, x1, y2)
if __name__ == '__main__':
k = HandleKaoyanbang()
k.handle_kaoyanbang_app()