『与善仁』Appium基础 — 28、APP模拟手势高级操作

本文详细介绍了如何使用Appium进行Android应用的自动化测试,包括手指轻敲、按下抬起、等待、长按、移动等手势操作,并提供了具体的代码实现。在实际业务场景中,例如设置应用的操作,如进入蓝牙选项、长按选项、滑动屏幕等,都可以通过这些手势模拟完成。

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

APP模拟手势的动作都被封装在TouchAction类中,TouchActionAppiumDriver的辅助类,主要针对手势操作,如滑动、按、拖动等,原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行。 所有手势都要通过执行函数才会运行。

提示:

我们之前学习的滑动操作,都是对TouchAction进行的封装。

之前我们说可以自定义滑动操作,就是通过封装TouchAction类中的方法实现的。

注意:

  • TouchAction辅助类所有的方法,都不能直接执行,需要调用perfrom()方法执行。
  • TouchAction类使用前需要导入包:

from appium.webdriver.common.touch_action import TouchAction

1、手指轻敲操作

模拟手指轻敲一下屏幕操作。

方法介绍:

轻敲操作:tap(element=None, x=None, y=None)

# 发送命令到服务器执行操作
执行方法:perform() 

# 调用方式
TouchAction(driver).tap(element,x,y).perform()

参数:

  1. element:被定位到的元素
  2. x:相对于元素左上⻆的坐标,通常会使用元素的X轴坐标
  3. y:通常会使用元素的Y轴坐标

参数可以传入元素,也可以传入x、y坐标。

也就是说可以在元素上进行轻敲动作,也可以在坐标上进行轻敲动作。

业务场景:

  1. 进入设置
  2. 点击“蓝牙”选项

代码实现:

"""
1.学习目标
    掌握TouchAction类使用,
    轻敲方法tap
2.操作步骤
    2.1 导入TouchAction类
    2.2 使用tap方法---手指轻敲
        tap(element=None,x=None,y=None)
            element  元素
            x  坐标
            y  坐标

        使用方式:
            TouchAction(driver).tap(element,x,y).perform()
3.需求
    使用tap方法点击设置首页蓝牙
"""

# 1.导入appium和TouchAction
import time
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction

# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
   
    "platformName": "Android",  # 系统名称
    "platformVersion": "7.1.2",  # 系统版本
    "deviceName": "127.0.0.1:21503",  # 设备名称
    "appPackage": "com.android.settings",  # APP包名
    "appActivity": ".Settings"  # APP启动名
}

# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(2)

# 4.操作APP
# 使用TouchAction中的tap方法点击蓝牙
# 4.1 敲击元素,传入元素
# 先定位到元素
blue_tooth = driver.find_element_by_android_uiautomator('new UiSelector().text("蓝牙")')
# 轻敲蓝牙按钮
TouchAction(driver).tap(blue_tooth).perform()

# 注意:
# 现在不是用click()方法进行点击元素的,
# 而是用TouchAction类中的tap方法进行的点击元素操作。

# 4.2 进入到蓝牙界面,传入开启\关闭按钮的坐标,实现开启\关闭蓝牙的操作
# 可以通过uiautomatorviewer定位工具获得元素按钮的坐标
# 开启\关闭元素的坐标为:[108,138][624,185]
# 也就是该元素x轴坐标为108到624,y轴坐标138到185
# 点击“关闭”按钮关闭蓝牙
time.sleep(2)
TouchAction(driver).tap(x=120, y=200).perform()

# 点击“开启”按钮打开蓝牙
time.sleep(2)
TouchAction(driver).tap(x=120, y=200).perform()

# 5.关闭APP
time.sleep(5)
driver.quit()

拓展:

如果调用tap()方法时,同时元素和坐标都传入参数,到底会怎样执行呢?

结论:

  • tap()方法元素和坐标参数同时传入,使用元素参数进行操作。
  • 如果所传的元素参数定位不到该元素,就会报错。

所以,传入元素参数就不用传入坐标参数了,二者选其一就行。

示例:

# 1.导入appium和TouchAction
import time
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction

# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
   
    "platformName": "Android",  # 系统名称
    "platformVersion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值