python app uiautomator2自动化
uiautomator2 python自动化。app自动化。
概述
这是一篇关于python自动化控制app的实践方案过程。app自动化主要有两个主流框架。appium和uiautomator2。个人感觉appium比较重,环境复杂(稳定性差),反应比较慢。代码繁琐。uiautomator2更加pythonic。下面让我们开始一起学习下uiautomator2吧!
什么是UI Automator 2?
UI Automator 是一个由Google开发的一款用来做Android自动化测Java库,uiautomator2则是将uiautomator中的接口封装成了Python库。旨在帮助开发人员和测试人员以编程方式测试Android应用程序。它提供了许多有用的工具和库,可以模拟用户在设备上执行的操作,如点击、滑动和输入。UI Automator 2还可以访问应用程序的状态和属性,并对视图层次结构进行检查和修改。这使得测试人员可以以可靠和一致的方式测试他们的应用程序,并且可以很容易地与CI/CD管道集成。
uiautomator2优点:
- 环境简单,仅需要Android SDK Platform-Tools 和python的包即可。
- 语法简单。
- 有可视化元素页面和代码自动生成。
- 执行速度快。
环境配置
1、安装ADB,配置环境变量。
首先,我们先说说,adb是什么,他的全称叫安卓调试桥,也就是Android debug bridge ,它是连接Windows平台和安卓手机之间的软件调试工具,很适合软件开发人员做各种兼容性调试
1.1下载工具包,解压。
下载地址:https://developer.android.com/studio/releases/platform-tools
1.2设置环境变量
控制面板——系统——高级系统设置——环境变量
编辑Path,添加刚才下载包的目录
1.3确认adb安装成功。
win + r ,cmd
adb可能存在的问题:
adb devices 不显示设备。
真机:请确保打开了开发者模式。USB连接方式为设备文件管理(MTP)。
模拟器:请保证模拟器使用的adb版本和platform-tools 的adb版本一致。以夜游模拟器为例,把platform-tools的adb 复制为 nox_adb 并替换到夜游模拟器的安装目录。
2、安装python3的uiautomator2库
pip3 install -U uiautomator2
3、为设备安装atx-agent
作用是把atx-agent初始化到手机,作为服务端。负责和uiautomator2通信。执行这一步的时候要确保adb devices 能看到连接的手机设备。并且状态不能是offline 或者unauthorized
命令:
python3 -m uiautomator2 init
安装成功后,手机设备桌面出现一个小汽车图标,这个就是atx.apk
本步骤可能出现的问题:
真机设备 offline 或者unauthorized 导致失败。
需要确保在同一个WiFi,手机进入开发者模式,USB连接设备文件传输模式。如果都还不可以 把adb重启 ,手机重新连接。
adb重启命令:
adb kill-server
adb start-server
4、安装weditor
pip3 install -U weditor
如果pip安装不成功则使用源码安装。
git clone https://github.com/openatx/weditor
pip3 install -e weditor
安装完成后运行命令:
python3 -m weditor
在命令行输入会自动打开浏览器,在页面上输入模拟器的地址或者真机序列号,点击Connect,然后点击Dump Hierarchy刷新,可以看到设备的界面。这里可以可视化操作元素和自动生成代码。
项目代码实践
import uiautomator2 as u2
d = u2.connect_usb(‘EJLDU16727023007’)
#d = u2.connect_usb(‘127.0.0.1:62001’)
d(text=“Kwai”).click()
print(d.info)
import uiautomator2 as u2
class UIAutomator:
def __init__(self, device):
self.device = device
self.d = u2.connect(device)
def unlock_screen(self):
"""
解锁屏幕
"""
if self.d(resourceId="com.android.systemui:id/lock_icon").exists():
self.d.swipe_points([(500, 1500), (500, 500)], 0.1)
def open_app(self, package_name):
"""
打开应用
"""
self.d.app_start(package_name)
def click_button(self, button_text):
"""
点击button
"""
btn = self.d(text=button_text)
if btn.exists:
btn.click()
Uiautomator2获取页面元素
import uiautomator2 as u2
# 连接设备
d = u2.connect()
# 打开应用
d.app_start("com.example.app")
# 获取元素的文本内容
text = d(resourceId="com.example.app:id/text_view").get_text()
print("元素文本内容:", text)
# 获取元素的 content-desc 属性值
desc = d(description="按钮1").info['contentDescription']
print("元素内容描述:", desc)
至此,自动化的基础情况已经完成。大家可以自己玩耍了。
更多推荐
所有评论(0)