zoukankan      html  css  js  c++  java
  • uiautomator2 使用

    初始化

    部署相关的守护进程。

    电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch

    python -m uiautomator2 init
    

    安装完成,设备上会多一个uiautomator的应用(ATX)。打开页面如下:

     测试

    编写以下脚本进行验证:

    python
    import uiautomator2 as u2
    d = u2.connect('10.59.8.231')//查看手机连接IP地址
    print(d.info) //打印手机信息
    exit() //退出python
    

    运行结果:

    定位元素:

    我们可以借助Android SDK自的uiautomatorviewer查看元素,这就要求手机必须以USB的方式连接PC,我前面使用的是WIFI连接进行连接的。所以,openatx提供了另外一个工具weditor 来解决这个问题。

    GitHub地址:https://github.com/openatx/weditor

    1、安装:

    pip install --pre --upgrade weditor

    安装成功如下:

    2、使用:

    python -m weditor
    

     默认会自动通过浏览器打开页面:http://localhost:17310/

    两种连接方式(推荐第2种):

    • 使用WIFI连接
      • 获取手机网络IP地址,确保电脑可以PING通手机IP,输入IP地址后点击Connect进行连接,此种方式用下来会很卡。
      • 代码示例:d = u2.connect('192.168.0.100')
    • 使用USB连接
      • 手机通过数据线连接电脑,命令行输入adb devices获取手机序列号,输入序列号后点击Connect进行连接。
      • 代码示例:d = u2.connect('123456df')

    当我们操作完手机后,可以点击“Dump Hierarchy”按钮进行刷新,启动实时,从而保持与设备上的界面保持同步。

     小结:这里基本不会有什么坑,按照以上流程会ok~

    编写测试脚本

    这里直接拿过来,后面待细细研究

    import uiautomator2 as u2
    from time import sleep
    
    d = u2.connect('192.168.31.234')
    
    # 启动App
    d.app_start("com.meizu.mzbbs")
    
    # 搜索
    d(resourceId="com.meizu.mzbbs:id/j0").click()
    
    # 输入关键字
    d(resourceId="com.meizu.mzbbs:id/p9").set_text("flyme")
    
    # 搜索按钮
    d(resourceId="com.meizu.mzbbs:id/tp").click()
    
    sleep(2)
    
    # 停止app
    d.app_stop("com.meizu.mzbbs") 
    

    app_start()和app_stop()用于启动和停止应用。

    常用的定位方式:

    • ResourceId定位:
      • d(resourceId="com.meizu.mzbbs:id/tp").click()
    • Text定位:
      • d(text="精选").click()
    • Description定位:
      • d(description="..").click()
    • ClassName定位:
      • d(className="android.widget.TextView").click()
  • 相关阅读:
    递推2 2046
    递推思想
    acm2047
    杭电ACM2043
    判断a=b?
    将一列字段用逗号分隔开,作为一个显示
    MESQL 数据误操作,恢复数据方法
    有两个frame,在一个frame中获取另一个frame中元素的值
    饼状图显示各类别展示所占百分比
    winfrom中的webbrowser内核版本修改
  • 原文地址:https://www.cnblogs.com/helloTerry1987/p/11440819.html
Copyright © 2011-2022 走看看