Android自动化之-python-uiautomator2入门简介

  • 2019 年 11 月 23 日
  • 筆記

python-uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口。他允许测试人员直接在PC上编写Python的测试代码,操作手机应用,完成自动化,大大提高了自动化代码编写的效率。

原理:

python-uiautomator2主要分为两个部分,python客户端,移动设备

  • python端: 运行脚本,并向移动设备发送HTTP请求
  • 移动设备:移动设备上运行了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。

整个过程

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

环境安装

1:ADB:

各种安卓测试框架的基础工具包,安装参考:https://blog.csdn.net/L_201607/article/details/78150107

官网:http://adbshell.com/downloads

2:python-uiautomator2

Python

pip install –pre -U uiautomator2

1

pip install –pre -U uiautomator2

3:安卓设备安装atx-agent

首先设备连接到PC,并能够adb devices发现该设备。

Python

python -m uiautomator2 init

1

python -m uiautomator2 init

这个命令做的是:从github下载atx–agent文件,并推送到手机。在手机上安装包名为com.github.uiautomator的apk

py连接安卓手机

连接手机:

python-uiautomator2连接手机的方式有两种,一种是通过WIFI(ip),另外一种是通过USB(ip+id)。两种方法各有优缺点。 WIFI最便利的地方要数可以不用连接数据线,USB则可以用在PC和手机网络不在一个网段用不了的情况。

1.使用WIFI连接

手机获取到手机的IP,并确保电脑可以PING通手机。手机的IP可以在设置-WIFI设置里面获取到。 比如手机的IP是192.168.0.100,连接设备的代码为

Python

import uiautomator2 as u2 d = u2.connect('192.168.0.100')

12

import uiautomator2 as u2d = u2.connect('192.168.0.100')

2.使用USB连接

手机的序列号可以通过adb devices获取到,假设序列号是123456f,连接代码为

Python

import uiautomator2 as u2 d = u2.connect_usb('123456f')

12

import uiautomator2 as u2d = u2.connect_usb('123456f')

可视化抓取控件以及常用操作

Android自动化之-ATX录放编辑器WEditor的安装使用与异常解决

如何在WEditor如何定位元素呢:

定位方式

  1. ResourceId定位: d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()
  2. Text定位 d(text="秒表").click()
  3. Description定位 d(description="..").click()
  4. ClassName定位 d(className="android.widget.TextView").click()

Python

# click 点击 d(text="Settings").click() # long click 长点击 d(text="Settings").long_click() # 等待元素的出现 d(text="Settings").wait(timeout=10.0)

12345678

# click 点击d(text="Settings").click() # long click 长点击 d(text="Settings").long_click() # 等待元素的出现d(text="Settings").wait(timeout=10.0)

对手机元素框输入中文:

如果可以定位到元素,直接通过set_text就可以输入中文

Python

d(text="Settings").set_text("你好")

1

d(text="Settings").set_text("你好")

如果定位不到元素需要使用send_keys方法,以及切换输入法

Python

d.set_fastinput_ime(True) d.send_keys("你好 Hello") d.set_fastinput_ime(False) # 输入法用完关掉

123

d.set_fastinput_ime(True)d.send_keys("你好 Hello")d.set_fastinput_ime(False) # 输入法用完关掉

截图:

Python

d.screenshot("home.jpg")

1

d.screenshot("home.jpg")

获取图层信息:

Python

xml = d.dump_hierarchy()

1

xml = d.dump_hierarchy()

github:https://github.com/openatx/uiautomator2

本文主内容转自:https://testerhome.com/topics/11357

原创文章,转载请注明: 转载自URl-team

本文链接地址: Android自动化之-python-uiautomator2入门简介