uiautomator2+Weditor+python操作考研帮

启动weditor:

python -m weditor

 

import uiautomator2 as u2


class HandleKaoyanbang(object):
    def __init__(self, serial=""):
        # 当前是通过usb的方法来连接移动设备的
        if serial:
            self.d = u2.connect_usb(serial=serial)
        else:
            self.d = u2.connect()
        self.close_app()
        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()
        self.d.watcher.when('//*[@resource-id="com.tal.kaoyan:id/tv_ok"]').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,并实现自动化操作"""
        # aapt这个工具
        # 通过weditor
        self.d.app_start(package_name="com.tal.kaoyan")
        # 在点击之前需要判断是否有这个控件
        self.d(text="密码登录").click_exists(timeout=15)
        # 通过找到相关控件之后,文本控件,set_text这个方法来输入文字
        self.d(resourceId="com.tal.kaoyan:id/login_email_edittext").set_text("450120127@163.com")
        # 输入密码
        self.d(resourceId="com.tal.kaoyan:id/login_password_edittext").set_text("abcd1234")
        # 同意协议
        self.d.xpath('//*[@resource-id="com.tal.kaoyan:id/login_treaty_checkbox"]').click(timeout=5)
        # self.d(resourceId="com.tal.kaoyan:id/login_login_btn").click()
        self.d(text="登录").click()
        # 在10秒钟如果这个界面启动了
        if self.d.wait_activity("com.tal.kaoyan.ui.activity.HomeTabActivity", timeout=10):
            self.d(text="社区").click_exists(timeout=10)
            # 获取到屏幕的中心点,x轴
            # 在获取到y轴远方点,获取到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()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值