高级手势TouchAction
高级手势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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)