Python+uiautomator2 UI自动化测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lb245557472/article/details/89294334

介绍

uiautomator2 是一个Android UI自动化框架,底层基于Google uiautomator,支持Python编写测试脚本对设备进行自动化,大大提高了自动化代码编写的效率。

环境配置

安装adb

谷歌官网下载Android Platform Tools 点击下载,解压,并将adb.exe所在的目录加入到系统的PATH中
直接打开命令行输入:adb 如下图说明安装成功
在这里插入图片描述

安装python-uiautomator2

首先创建一个虚拟环境(确保已经安装过virtualenv)

virtualenv  uiautomator

在这里插入图片描述
激活虚拟环境,进入到Scripts(Windows)目录下运行

activate

在这里插入图片描述
安装python-uiautomator2

pip install --pre -U uiautomator2

在这里插入图片描述
初始化设备
首先设备连接到PC,并能够adb devices发现该设备,然后运行

python -m uiautomator2 init

在这里插入图片描述

应用自动化

  • 连接设备
  • 定位元素工具
  • 定位方式
  • 编写脚本
连接设备

python-uiautomator2连接手机的方式有两种,一种是通过WIFI,另外一种是通过USB。两种方法各有优缺点。
WIFI最便利的地方要数可以不用连接数据线,个人感觉USB更稳定一点

  • WiFi连接(手机获取到手机的IP,并确保电脑可以PING通手机。手机的IP可以在设置-WIFI设置里面获取到。
    比如手机的IP是172.16.152.15)(PS:由于本人用的连接夜神模拟器,所以用WiFi连接不了,只能使用设备名连接)
    import uiautomator2 as u2
    d = u2.connect_wifi('172.16.152.15')
    
  • USB连接(devices 名可以通过adb devices获取到,假设序列号是127.0.0.1:62001)
    import uiautomator2 as u2
    d = u2.connect_usb('127.0.0.1:62001')
    
  • 直接连接,会自动分辨是WiFi还是USB
    import uiautomator2 as u2
    #d = u2.connect('127.0.0.1:62001')
    d = u2.connect('172.16.152.15')
    
定位元素工具

查找元素属性可以通过三种方式,一是通过Android SDK内置工具uiautomatorviewer.bat 获取,比较方便,但是运行uiautomator2的时候,uiautomatorviewer.bat运行不起来,两者之间冲突太严重;二是利用appium来查找,不过这个环境安装比较复杂(PS:利用appium时也需要把ATXagent停掉,不然连接不上appium);三是利用weditor。
安装weditor: pip install --pre weditor
安装完成后运行:python -m weditor,会启动一个网页 http://localhost:17310/(可能我的模拟器不兼容,显示黑屏,但是元素还是可以获取到)
weditor图
在这里插入图片描述
appium图
在这里插入图片描述

定位方式

Selector是一种在当前窗口中标识特定UI对象的便捷机制

# 选择文本为'Enter your Full Name',className为'android.widget.EditText',当元素不唯一时,可选择多个属性,逗号分隔
d(text="Enter your Full Name", className="android.widget.EditText").send_keys("test")
编写脚本

一个登陆脚本

import time
import uiautomator2 as u2

d = u2.connect('127.0.0.1:62001')
# print d.adb_shell("dumpsys window | grep mCurrentFocus") # 获取当前窗体的信息
# packageName = "io.testproject.demo"
d.app_start("io.testproject.demo") # 启动APP
d(resourceId="io.testproject.demo:id/name").clear_text()
# 输入框输入信息的两种操作:send_keys和set_text
# d(text="Enter your Full Name").send_keys("test")
# d(resourceId="io.testproject.demo:id/name").send_keys("test")
d(resourceId="io.testproject.demo:id/name").set_text("test")
# d(resourceId="io.testproject.demo:id/password").clear_text()
d(resourceId="io.testproject.demo:id/password").send_keys("12345")
d(textContains="Login").click()
time.sleep(3)
d.app_stop("io.testproject.demo")

图示
在这里插入图片描述
参考:
https://github.com/openatx/uiautomator2#selector
https://blog.csdn.net/ricky_yangrui/article/details/81415365

猜你喜欢

转载自blog.csdn.net/lb245557472/article/details/89294334