高级手势TouchAction

发布时间 2023-05-01 17:33:48作者: 璀璨如歌

高级手势TouchAction

应用场景

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

使用步骤

1、导包from appium.webdriver.common.touch_action import TouchAction

2、创建TouchAction对象

3、通过对象调用想执行的手势

4、通过perform()执行动作

注意点

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

轻敲

应用场景

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

方法名

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

示例

1.打开《设置》

2.轻敲“WLAN”

核心代码

# 1、找到要点击的元素
#wlan_button = driver.find_element(By.XPATH,"//*[@text='WLAN']")
# 2、创建touchAction对象
# touch_action = TouchAction(driver)
# 3、调用想要执行的动作
#tap参数,count模拟点击次数
# touch_action = touch_action.tap(wlan_button)
# 4、使用perform执行动作
#通过元素点击
#TouchAction(driver).tap(wlan_button).perform()
#通过坐标点击
#TouchAction(driver).tap(x=400,y=850).perform()

TouchAction(driver).tap(el=None,x=none,y=None,count=1).perform()

按下和抬起

应用场景

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

方法名

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

#模拟手指对元素或坐标的抬起操作
TouchAction(driver).release().perform()

核心代码

    #使用坐标的形式点击WLAN(400,850),2秒后,按下(400,850)的位置
    TouchAction(driver).press(x=400,y=850).perform()
    sleep(2)
    TouchAction(driver).press(x=400, y=850).perform()
   #使用坐标的形式点击WLAN(400,850),2秒后,按下(400,850)的位置,并抬起
    TouchAction(driver).press(x=400,y=850).perform()
    sleep(2)
    TouchAction(driver).press(x=400, y=850).release().perform()

等待

应用场景

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

方法名

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

示例

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

核心代码

TouchAction(driver).tap(x=400,y=850).perform()
sleep(2)
TouchAction(driver).press(x=350,y=350).wait(2000).release().perform()

长按

应用场景

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

方法名

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

核心代码

#使用坐标的形式点击WLAN(400,850),2秒后,长按(350,350)的位置持续2秒
TouchAction(driver).tap(x=400,y=850).perform()
sleep(2)
TouchAction(driver).long_press(x=350,y=350,duration=2000).perform()

注意点

  • 长按===按下+等待+抬手

移动

应用场景

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

方法名

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

核心代码

    #手势解锁图案,包名界面名为com.android.settings/.ChooseLockPattern
    TouchAction(driver).press(x=182,y=775).move_to(x=449,y=775)\
        .move_to(x=720,y=775).move_to(x=720,y=1040)\
        .move_to(x=450,y=1040).move_to(x=720,y=1310)\
        .move_to(x=450,y=1310).move_to(x=180,y=1040)\
        .move_to(x=180,y=1310).release().perform()

总结

  • 创建对象

    • 关键属性:TouchAction(driver)
  • 执行动作

    • 关键属性:perform()
  • 轻敲事件

    • 关键属性:tap(el=None,x=none,y=None,count=1)
  • 按下事件

    • 关键属性:press(el=None, x=None, y=None)
  • 抬起事件

    • 关键属性:release()
  • 等待事件

    • 关键属性:wait(1000)
  • 长按事件

    • 关键属性:long_press(el=None,x=None,y=None,duration=1000)
  • 移动事件

    • 关键属性:move_to(el=None, x=None, y=None)