当前位置:   article > 正文

【uiautomator2】 Android自动化测试框架_atx-agent

atx-agent

UiAutomator是Google提供的用来做安卓自动化测试的一个Java库.

在这里插入图片描述

Uiautomator工作流程
1.在移动设备上安装atx-agent(守护进程),随后atx-agent启动uiautomator2服务(默认7912端口)进行监听
2.在PC上编写测试脚本并执行(相当于发送HTTP请求到移动设备的server端)
3.移动设备通过WiFi或USB接收到PC上发来的HTTP请求,执行指定的操作

一.前置工作(OPPO R11s手机)

打开开发者模式和USB调试模式

设置>关于手机>版本号(连续点击)>其他设置>开发者选项>USB调试
  • 1

在这里插入图片描述
在这里插入图片描述
查看USB序列号

adb devices
  • 1

在这里插入图片描述

二.ATX agent安装以及环境优化设置
2.1安装atx agent
pip install uiautomator2
# 对模拟器安装 ATX agent 
python -m uiautomator2 init
  • 1
  • 2
  • 3
# 查看atx-agent是否运行
adb shell
  • 1
  • 2

在这里插入图片描述

2.2atx agent环境优化设置

通过电源优化,关闭速冻,避免atx-agent退出
在这里插入图片描述

在这里插入图片描述
设置atx-agent自启动
在这里插入图片描述
在这里插入图片描述

三.App UI自动化元素定位工具weditor安装与使用

输入设备地址,点击Connect连接相应设备

pip install weditor==0.6.4
  • 1
# weditor 启动
weditor
  • 1
  • 2

在这里插入图片描述
在这里插入图片描述

四.uiautomator2的基本操作
# -*- coding: utf-8 -*-
# @Time    : 2022/12/6 20:24
# @Author  : Cocktail_py

import uiautomator2 as u2
import uiautomator2 as u2
d = u2.connect_usb("6064dcb0")
# 通过收集wifi进行连接,需要查看手机的IP地址
# d = u2.connect_wifi("192.168.1.7")
# 通过adb wifi也就是adb tcpip模式,注意不要丢掉端口号
# adb tcpip 5555
# d = u2.connect_adb_wifi("192.168.1.7:5555")

class HandleKaoyanbang(object):
    def __init__(self,serial="6064dcb0"):
        # 当前是通过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,并实现自动化操作"""
        # aapt这个工具
        # 通过weditor
        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("123456")
        # 输入密码
        self.d(resourceId="com.tal.kaoyan:id/login_password_edittext").set_text("123456")
        # 点击登录
        # 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) # y轴最下边
            y2 = int(self.size[1]*0.15) # y轴上方
            while True:
                # 检测到吐司之后停止
                # get toast,是安卓系统的一个信息提示操作
                if self.d.toast.get_message(0) == "内容已经全部加载完了":
                    self.close_app()
                    return
                # 从(x1,y1)滑动到(x1,y2)
                self.d.swipe(x1,y1,x1,y2)


if __name__ == '__main__':
    k = HandleKaoyanbang()
    k.handle_kaoyanbang_app()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/591415
推荐阅读
相关标签
  

闽ICP备14008679号