App自动化测试——高级手势TouchAction

本文详细介绍了如何使用代码实现移动设备上的各种手势操作,包括轻敲、按压、抬起、等待、长按和手指移动。通过TouchAction对象,开发者可以创建复杂的交互,如模拟解锁操作、长按弹出菜单等。示例代码覆盖了不同手势的实现,为移动应用自动化测试和交互设计提供了实用参考。
摘要由CSDN通过智能技术生成

学习目标

  1. 能够使用代码完成轻敲手势
  2. 能够使用代码完成按下手势
  3. 能够使用代码完成抬起手势
  4. 能够使用代码完成等待操作
  5. 能够使用代码完成长按手势
  6. 能够使用代码完成手指移动操作

一. 高级手势TouchAction

应用场景
TouchAction 可以实现一些针对手势的操作,比如滑动、长按、拖动等。我们可以将这些基本手势组合成一个相对复杂的手势。比如,我们解锁手机或者一些应用软件都有手势解锁的这种方式。

使用步骤

  1. 创建 TouchAction 对象
  2. 通过对象调用想执行的手势
  3. 通过 perform() 执行动作

注意点

所有手势都要通过执行perform()函数才会运行。

1.1 轻敲操作【掌握】

应用场景
模拟手指对某个元素或坐标按下并快速抬起。比如,固定点击(100, 100)的位置。

方法名

# 模拟手指对元素或坐标的轻敲操作
# 参数:
# element:元素
# x:x坐标
# y:y坐标
TouchAction(driver).tap(element=None, x=None, y=None).perform()

示例

  1. 打开《设置》
  2. 轻敲 “WLAN”

核心代码

el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).tap(el).perform()

1.2 按下和抬起操作【掌握】

应用场景
模拟手指一直按下,模拟手指抬起。可以用来组合成轻敲或长按的操作

方法名

# 模拟手指对元素或坐标的按下操作
# 参数:
# el:元素
# x:x坐标
# y:y坐标
TouchAction(driver).press(el=None, x=None, y=None).perform()
# 模拟手指对元素或坐标的抬起操作
TouchAction(driver).release().perform()

示例1

使用坐标的形式按下 WLAN (650, 650),2 秒后,按下(650, 650)的位置

核心代码

TouchAction(driver).press(x=650, y=650).perform()
time.sleep(2)
TouchAction(driver).press(x=650, y=650).perform()

示例2

使用坐标的形式按下 WLAN (650, 650),2 秒后,按下(650, 650)的位置,并抬起

核心代码

TouchAction(driver).press(x=650, y=650).perform()
time.sleep(2)
TouchAction(driver).press(x=650, y=650).release().perform()

1.3 等待操作【掌握】

应用场景

模拟手指等待,比如按下后等待 5 秒之后再抬起。

方法名

# 模拟手指暂定操作
# 参数:
# ms:暂停的毫秒数
TouchAction(driver).wait(ms=0).perform()

示例

使用坐标的形式点击 WLAN (650, 650),2 秒后,按下(650, 650)的位置,暂停 2 秒,并抬起

核心代码

TouchAction(driver).tap(x=650, y=650).perform()
time.sleep(2)
TouchAction(driver).press(x=650, y=650).wait(2000).release().perform()

1.4 长按操作【掌握】

应用场景

模拟手指对元素或坐标的长按操作。比如,长按某个按钮弹出菜单。

方法名

# 模拟手指对元素或坐标的长按操作
# 参数:
# el:元素
# x:x坐标
# y:y坐标
# duration:长按时间,毫秒
TouchAction(driver).long_press(el=None, x=None, y=None, duration=1000).perform()

示例

使用坐标的形式点击 WLAN (650, 650),2 秒后,长按(650, 650)的位置持续 2 秒

核心代码

TouchAction(driver).tap(x=400, y=400).perform()
time.sleep(2)
TouchAction(driver).long_press(x=400, y=400, duration=2000).release().perform()

1.5 移动操作【掌握】

应用场景

模拟手指移动操作,比如,手势解锁需要先按下,再移动。

方法名

# 模拟手指对元素或坐标的移动操作
# 参数:
# el:元素
# x:x坐标
# y:y坐标
TouchAction(driver).move_to(el=None, x=None, y=None).perform()

示例

在手势解锁中,画一个如下图的案例
包名界面名为 com.android.settings/.ChooseLockPattern

在这里插入图片描述
核心代码

TouchAction(driver).press(x=246, y=857).move_to(x=721, y=867).move_to(x=1200,
y=851).move_to(x=1200, y=1329).move_to(x=724, y=1329).move_to(x=246,
y=1329).move_to(x=718, y=1815).release().perform()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值