Python+UIAutomator2屏幕操作行为

本文详细介绍UI自动化中常见的操作指令,包括点击、等待、滚动、拖动等,适用于自动化测试工程师和UI开发人员,掌握这些技巧可以提高自动化测试的效率和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.点击特定对象中心位置:

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

2.等待对象显示并点击,等待最多10s:

d(text="Settings").click(timeout=10)

3.当10s内对象出现就点击,默认0s:

clicked = d(text='Skip').click_exists(timeout=10.0)

4.点击并轮询对象直到消失,其中maxretry为最多点击次数,默认10;interval为轮询时间间隔,默认1:

d(text="Skip").click_gone(maxretry=10, interval=1.0)

5.长按指定的对象,duration为按住时间,timeout为超时时间:

d(text="Settings").long_click(duration=10,timeout=10)

6.拖动指定对象到x,y位置,0.5s完成:

d(text="Settings").drag_to(x, y, duration=0.5)

7.拖动指定对象到另一个对象位置,0.5s内完成:

d(text="Settings").drag_to(text="Clock", duration=0.5)

8.双指从(a,b),(c,d)滑动(a1,b1),(c1,d1),步长100:

d().gesture((a,b),(c,d), a1,b1),(c1,d1),steps=100)

9.从屏幕外侧向中心滑动,percent为左右起始位置占两边的比例:

d().pinch_out(percent=33, steps=100)

10.从屏幕中心向外侧滑动,percent为左右起始位置占两边的比例:

d().pinch_out(percent=33, steps=100)

11.等待对象:

d(text='相机').wait(10)

12.等待对象消失,最多等待10s:

d(text='相机').wait_gone(timeout=10)

13.滚动:

a.向上滚动:d(scrollable=True).scroll(steps=10)

b.向下滑动:d(scrollable=True).scroll.vert.backward()

c.水平向右滚动:d(scrollable=True).scroll.horiz.forward(steps=50)

d.水平向左滚动:d(scrollable=True).scroll.horiz.backward(steps=50)

e.水平滑动到最左边:d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000)

f.水平滑动到最右边:d(scrollable=True).scroll.horiz.toEnd(steps=100, max_swipes=1000)

g.竖直滑动到结尾:d(scrollable=True).scroll.toEnd()

h.竖直滑动到开头:d(scrollable=True).scroll.toBeginning(steps=50)

i.滑动到指定位置(测试):d(scrollable=True).scroll.to(text ='测试')

 

转至:https://blog.youkuaiyun.com/Botree_chan/article/details/82119945

### 如何使用 Pythonuiautomator2 实现地图的缩放操作 要通过 Python 使用 `uiautomator2` 来实现地图应用上的放大和缩小功能,可以模拟多指手势来完成这一目标。以下是一个详细的说明: #### 1. 安装依赖库 首先需要安装必要的库,包括 `uiautomator2`。 ```bash pip install uiautomator2 ``` #### 2. 初始化设备连接 在脚本中初始化与 Android 设备的连接,并确保设备已启用 USB 调试模式或者 ADB 连接正常。 ```python import uiautomator2 as u2 d = u2.connect() # 自动连接到当前唯一设备 print(d.info) # 打印设备基本信息以确认连接成功 ``` [^3] #### 3. 编写手势函数 为了实现地图的缩放效果,可以通过调用 `swipe` 方法并指定多个手指触控点的位置变化来模拟双指捏合/拉伸动作。 ##### 放大(Zoom In) 定义一个用于执行放大操作的方法如下所示: ```python def zoom_in(device, center_x, center_y, distance=200, steps=50): start_1 = (center_x - distance / 2, center_y - distance / 2) end_1 = (center_x, center_y) start_2 = (center_x + distance / 2, center_y + distance / 2) end_2 = (center_x, center_y) device.swipe(start_1[0], start_1[1], end_1[0], end_1[1], fingers=[{'start': start_1, 'end': end_1}, {'start': start_2, 'end': end_2}], duration=steps * 0.01) ``` 此处参数解释: - `device`: 已经建立好的设备对象。 - `center_x`, `center_y`: 屏幕上中心位置坐标,作为手势起始点计算依据。 - `distance`: 初始两指点间距离,默认设置为屏幕宽度的一半适合大多数情况。 - `steps`: 动作持续时间分解成多少步数,数值越大越平滑但耗时也更久。 [^4] ##### 缩小(Zoom Out) 同样地,创建另一个方法来进行反向的手势处理即缩小视图: ```python def zoom_out(device, center_x, center_y, distance=200, steps=50): start_1 = (center_x, center_y) end_1 = (center_x - distance / 2, center_y - distance / 2) start_2 = (center_x, center_y) end_2 = (center_x + distance / 2, center_y + distance / 2) device.swipe(start_1[0], start_1[1], end_1[0], end_1[1], fingers=[{'start': start_1, 'end': end_1}, {'start': start_2, 'end': end_2}], duration=steps * 0.01) ``` 此段逻辑正好相反于上述放大过程,从集中一点向外扩展至一定范围形成散开趋势从而达到缩小目的。 [^5] #### 4. 应用场景测试 最后,在实际项目里可以根据需求多次调用这些自定义的功能模块去控制不同区域的地图显示状态调整大小比例等等。 例如在一个循环结构里面不断改变输入变量值让程序自动连续做出相应反应直到满足条件为止;也可以绑定按键事件让用户手动触发特定行为等灵活运用方式均可考虑采用。 ```python if __name__ == "__main__": screen_width = d.window_size()[0] screen_height = d.window_size()[1] mid_point_x = int(screen_width / 2) mid_point_y = int(screen_height / 2) zoom_in(d, mid_point_x, mid_point_y) import time;time.sleep(2)#等待动画结束再继续下一步骤 zoom_out(d,mid_point_x ,mid_point_y ) ``` 以上代码片段展示了基本的操作流程演示如何交替进行一次性的放大后再恢复原状的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值