目标
1.能够使用代码完成轻敲手势
2.能够使用代码完成按下手势
3.能够使用代码完成抬起手势
4.能够使用代码完成等待操作
5.能够使用代码完成长按手势
6.能够使用代码完成手指移动操作
高级手势TouchAction
应用场景
TouchAction可以实现一些针对手势的操作,比如滑动、长按、拖动等。我们可以将这些基本手势组合成一个相对复杂的手势。比如,我们解锁手机或者一些应用软件都有手势解锁的这种方式。
使用步骤
1.创建TouchAction对象
2.通过对象调用想执行的手势
3.通过perform()执行动作
注意点
所有手势都要通过执行perform()函数才会运行
轻敲操作
应用场景
模拟手指对某个元素或坐标按下并快速抬起。比如,固定点击(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()
按下和抬起操作
应用场景
模拟手指一直按下,模拟手指抬起。可以用来组合成轻敲或长按的操作。
方法名
#模拟手指对元素或坐标的按下操作
#参数:
#el:元素
#x:x坐标
#y:y坐标
TouchAction(driver).press(el=None,x=None,y=None).perform()
#模拟手指对元素或坐标的抬起操作
TouchAction(driver).release().perform()
示例
使用坐标的形式按下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()
使用坐标的形式按下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()
等待操作
应用场景
模拟手指等待,比如按下后等待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()
长按操作
应用场景
模拟手指对元素或坐标的长按操作。比如,长按某个按钮弹出菜单。
方法名
#模拟手指对元素或坐标的长按操作
#参数:
#el:元素
#x:x坐标
#y:y坐标
#duration:长按时间,毫秒
TouchAction(driver).long_press(el=None,x=None,y=None,duration=1000).perform()
移动操作
应用场景
模拟手指移动操作,比如,手势解锁需要先按下,再移动。
方法名
#模拟手指对元素或坐标的移动操作
#参数:
#el:元素
#x:x坐标
#y:y坐标
TouchAction(driver).move_to(el=None,x=None,y=None).perform()
示例
在手势解锁中,画一个如下图的案例包名界面名为com.android.settings/.ChooseLockPattern
![](https://img-blog.csdnimg.cn/img_convert/a2128dfcc58b5b4f27ff0e186918a672.png)
代码
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()