zoukankan      html  css  js  c++  java
  • 一个好用的移动端自动化框架-uiautomator2

    简介:

      uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作

    优缺点:
      优点:

        1、环境搭建简单

        2、元素查找有专用的weditor,相比其他简单明了

        3、代码语法简单,容易学习理解

        4、相比appium不用启动客户端

        5、可以使用wifi以及usb连接

      缺点:

        1、兼容性相对较差

        2、功能相比appium较缺少

        3、设备上面必须安装一些调试app,新设备就必须去连接usb然后去init安装,比较不省心

    安装,安装这一块就不多bb了:

      装一下uiautomator2的包

      pip3 install --pre -U uiautomator2

      usb连接手机装一下依赖的包:

      python3 -m uiautomator2 init

    装完之后,开始启动撸码

    import uiautomator2
    
    ## wifil连接
    d = uiautomator2.connect_wifi()
    ## 直接连接
    d1 = uiautomator2.connect()
    ## usb连接
    d2 = uiautomator2.connect_usb()
    ## adb、wifi连接
    d3 = uiautomator2.connect_adb_wifi()

    这些就是直接启动,然后就可以直接开始android的ui自动化了

    下面附一些基础语法

    ResourceId定位:
    d(resourceId="com.meizu.mzbbs:id/tp").click()
    
    Text定位:
    d(text="精选").click()
    
    Description定位:
    d(description="..").click()
    
    ClassName定位:
    d(className="android.widget.TextView").click()
    
    import uiautomator2 as u2
    from time import sleep
    
    ##使用本地wifi地址
    d = u2.connect('192.168.31.234')
    
    ##等待元素出现
    # d(text='settings').wait(timeout=10.0)
    
    ##使用设备id控制
    # d = u2.connect_usb('设备id')
    
    # 启动App
    d.app_start("com.meizu.mzbbs")
    # 搜索
    d(resourceId="com.meizu.mzbbs:id/j0").click()
    # 停止app
    d.app_stop("com.meizu.mzbbs") 
    
    
    中文字符的输入
    如果可以定位到元素,直接通过set_text就可以输入中文
    d(text="Settings").set_text("你好")
    
    如果定位不到元素需要使用send_keys方法,以及切换输入法
    d.set_fastinput_ime(True)
    d.send_keys("你好 Hello")
    d.set_fastinput_ime(False) # 输入法用完关掉
    
    截图:d.screenshot("home.jpg")
    获取图层信息:xml = d.dump_hierarchy()
    
    ## 按住滑动
    u.swipe_points([(0.235, 0.456), (0.503, 0.449), (0.509, 0.601), (0.777, 0.603), (0.771, 0.763), (0.222, 0.75)], 0.2)

      

  • 相关阅读:
    JVM工作原理--垃圾收集
    并发编程之单例模式
    设计模式之动态代理
    UML类图基础
    CAP理论的理解
    Dubbo RPC调用参数校验---错误message自动返回
    ELK日志分析系统搭建
    Kafka原理及应用(一)
    HTTPS的原理
    Maven 生命周期的概念(指令默认顺序执行)
  • 原文地址:https://www.cnblogs.com/dflblog/p/11642927.html
Copyright © 2011-2022 走看看