import uiautomator2 as u2
import time
class HandleKaoyanbang():
def __init__(self,serial = "192.168.101.65"):
# 当前通过wifi方式连接usb设备
self.d = u2.connect_wifi(serial)
self.size = self.get_windowsize()
self.handle_watcher()
def handle_watcher(self):
"""
定义一个监控器,会单独起一个线程
:return:
"""
# 用户隐私协议xpath
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:
"""
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,并实现自动化操作
:return:
"""
# 包名可通过aapt获取,package的值
# 通过weditor
self.d.app_start("com.tal.kaoyan")
self.d(text = "学长招募").click_exists(timeout=5)
self.d(text = "确定").click_exists(timeout=5)
# 在点击之前,需要判断是否有这个控件
self.d(text = "密码登录").click_exists(timeout=5)
# 通过找到相关控件后,文本控件,set_text方法来输入文字
self.d(resourceId = "com.tal.kaoyan:id/login_email_edittext").set_text("17718357827")
# 输入密码,获取逻辑为图1
self.d(resourceId = "com.tal.kaoyan:id/login_password_edittext").set_text("Hello1234")
time.sleep(5)
# 点击登录按钮
self.d(resourceId = "com.tal.kaoyan:id/login_login_btn").click()
time.sleep(6)
# 10s中之内,界面启动,进行下一步操作
if self.d.wait_activity(".ui.activity.HomeTabActivity",timeout = 10):
self.d(text = "研讯").click_exists(timeout=10)
# 获取到屏幕的中心点,x轴
# 获取到y轴远方点,获取到轴近点
x1 = int(self.size[0] * 0.5)
y1 = int(self.size[1] * 0.9)
y2 = int(self.size[1] * 0.15)
while True:
# get toast,是安卓系统的一个信息提示操作
if self.d.toast.get_message(0) == "内容已经全部加载完了":
self.close_app()
return
self.d.swipe(x1,y1,x1,y2)
if __name__ == '__main__':
k = HandleKaoyanbang()
k.handle_kaoyanbang_app()
网友评论