python uiautomator2 安装及使用

1,安装uiautomator2 

pip install uiautomator2 -i https://pypi.tuna.tsinghua.edu.cn/simple/

2,安装weditor

pip install --pre --upgrade weditor -i https://pypi.tuna.tsinghua.edu.cn/simple/

如果安装出错了,可以加了个版本号安装

pip install -U weditor==0.5.2

`--pre` 选项将允许 `pip` 安装 `package_name` 的预发布版本和开发版本,而不仅仅是稳定版本。

`-U`  或 `--upgrade` 表示升级所有的依赖包到最新版本。

3,安装adb

adb安装【最新】-优快云博客

4,查看设备

adb devices

5, 安装atx-agent  安装在手机  手机驱动

python -m uiautomator2 init

注意如果安装失败,请尝试翻墙安装

如下即安装成功 

 

6, 启动weditor  查看app节点等

python -m weditor

 代码运行连接手机

如雷电模拟器

# adb devices 可以获取pid emulator-5554

# 连接手机/模拟器

import uiautomator2

d = uiautomator2.connect_usb('emulator-5554')

常用语法

(1)启动app

d.app_start("com.addcn.android.house591")

(2)关闭app

d.app_stop("com.addcn.android.house591")

(3)ResourceId定位

d(resourceId="com.addcn.android.house591:id/ad_banner").click()

(4)Text定位

d(text="精选").click()

(5)Description定位

d(description="..").click()

(6)ClassName定位

d(className="android.widget.TextView").click()

(7)xpath定位

d.xpath("//*[@content-desc='分享']").click()

(8)在屏幕上滑动

# swipe from (sx, sy) to (ex, ey)

d.swipe(sx, sy, ex, ey)

(9)在屏幕上滑动

d(text = "Settings ").long_click()

(10)系统常用按键

 d.press("back") 

home                   #手机Home键
back                   #手机返回键
left                   #对应键盘上的向右键<-
right                  #对应键盘上的向右键->
up                    #对应键盘上的向上键
down                   #对应键盘上的向下键
center                  #选中?
menu                   #菜单
search                  #查找?
enter                  #对应键盘上的Enter键
delete(or del)                          #对应键盘上的DEL键 用于删除
recent(recent apps)                  #任务切换
volume_up                #声音向上调整
volume_down               #声音向下调整
volume_mute               #静音按键
camera                  #拍照
power                   #电源键

<think>嗯,用户现在想在Python使用uiautomator2的class类进行自动化测试。我之前已经回答过一些关于uiautomator2的基本使用,现在需要更详细地讲解如何利用类来组织代码。首先,我得回忆一下uiautomator2的API结构。记得uiautomator2主要通过Device类来操作设备,所以用户可能需要通过实例化这个类来连接设备。然后,像定位元素、点击、输入这些操作都是通过这个类的实例来调用的。 用户提到使用class类,可能是指他们想用面向对象的方式来封装测试代码,这样结构更清晰,也便于维护。这时候我应该建议用户创建一个测试类,把设备初始化和常用操作封装成方法。比如,在类的__init__方法中初始化设备,然后定义不同的方法对应不同的测试步骤。 然后,我需要考虑用户可能的实际应用场景。比如,他们可能需要登录应用、进行某些操作,然后验证结果。所以举一个具体的例子,比如封装一个AppTest类,里面有启动应用、登录、检查登录成功的方法。这样用户可以看到如何将各个步骤组织到类的方法中。 另外,用户可能关心元素定位的方式。uiautomator2支持多种选择器,比如text、resourceId、className等。需要提醒用户使用这些选择器来定位元素,并给出示例代码。比如,使用d(text="登录").click()这样的代码。 还要注意异常处理和等待机制,比如使用watcher处理弹窗,或者使用隐式等待确保元素加载完成。这部分内容能帮助用户写出更健壮的测试脚本。 最后,要生成相关问题,帮助用户深入学习和解决可能遇到的问题。比如,如何优化代码结构、处理动态元素、提升执行速度等。这些问题能引导用户进一步探索uiautomator2的高级功能。</think>### 如何在 Python使用 uiautomator2 的 class 类进行自动化测试 #### 1. 类的基本使用场景 uiautomator2 的核心操作基于 `Device` 类的实例化对象,通过面向对象编程可实现更清晰的测试逻辑。以下是典型使用步骤: ```python import uiautomator2 as u2 class AppTest: def __init__(self, device_id=None): # 通过设备序列号或adb连接初始化 self.d = u2.connect(device_id) # 不传参数时默认连接第一个设备 def open_app(self, package_name): self.d.app_start(package_name) def login(self, username, password): # 使用选择器定位元素 self.d(resourceId="com.example:id/username").set_text(username) self.d(resourceId="com.example:id/password").set_text(password) self.d(text="登录").click() def check_login_success(self): return self.d(text="欢迎页面").exists(timeout=10) # 使用示例 if __name__ == "__main__": test = AppTest("emulator-5554") # 替换为实际设备ID test.open_app("com.example.app") test.login("user123", "pass456") assert test.check_login_success() ``` #### 2. 关键方法解析 - **元素定位**:支持多种选择器组合(`text`、`resourceId`、`className`等) ```python self.d(className="android.widget.Button", text="提交") ``` - **隐式等待**:通过 `timeout` 参数控制等待时间 ```python self.d(text="加载中").wait(timeout=15) ``` - **事件链操作**:使用 `Gesture` 实现复杂手势 ```python self.d.swipe_ext("right", scale=0.8) # 右滑80%屏幕宽度 ``` #### 3. 类封装最佳实践 1. **设备管理分离**:将设备连接逻辑封装到基类 2. **页面对象模式**:为每个功能页面创建独立类 3. **异常处理增强**:通过装饰器统一捕获 `UiObjectNotFoundError` ```python from uiautomator2.exceptions import UiObjectNotFoundError def handle_element_not_found(func): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except UiObjectNotFoundError: args[0].d.screenshot("error.png") # 自动截图 raise return wrapper @handle_element_not_found def click_submit(self): self.d(text="提交").click() ``` #### 4. 调试技巧 - 启用实时调试: ```python self.d.debug = True # 显示操作日志 ``` - 使用 Watcher 处理弹窗: ```python self.d.watcher("UPDATE").when(text="立即更新").click() self.d.watchers.run() # 触发监控 ``` [^1]: uiautomator2 通过封装底层 Android UI Automator 测试框架实现自动化控制[^1]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值