TouchAction

在之前说过了滑动swip,那种是两点之间的滑动,比如上滑,左滑等。但实际工作中会遇到一些复杂的场景,如九宫格的滑动等待,这时候就要使用TouchAction,TouchAction包含一系列操作,比如按压,长按,点击,移动,暂停,使用TouchAction需要先导入对应的模块

from appium.webdriver.common.touch_action import TouchAction

按压

方法:press()开始按压一个元素或者坐标点(x,y),通过手指按压手机屏幕的某个位置,press()也可以接收屏幕的坐标(x,y)

press(self,el=None,x=None,y=None)

TouchAction(driver).press(x=0,y=300)

TouchAction(driver).press(x=0,y=308).release().perform()

除了press()方法之外,本例中还用到了别外两个新方法。

  • release() 结束的行动取消屏幕上的指针。
  • Perform() 执行的操作发送到服务器的命令操作

长按

方法:longPress()

开始按压一个元素或坐标点(x,y)。 相比press()方法,longPress()多了一个入参,既然长按,得有按的时间吧。duration以毫秒为单位。1000表示按一秒钟。其用法与press()方法相同。

long_press(self,el=None,x=None,y=None,duration=1000)

点击

方法:tap()

对一个元素或控件执行点击操作。用法参考press()。

tap(self,el=None,x=None,y=None,count=1)

移动

move_to()将指针从上一个点移动到指定的元素或点

move_to(self,el=None,x=None,y=None)

注意:移动到目标位置有时是算绝对路径,有时是基于前面一个坐标点的偏移量,要结合具体的app来实践

暂停

Wait()

wait(self,ms=0)

单位为ms

释放

方法release()结束的行动或取消屏幕上的指针

release(self)

执行

perform()执行的操作发送到服务器的命令操作

perform(self)

实战

目的:完成下面的图案滑动

 from appium.webdriver.common.touch_action import TouchAction
from appium import webdriver desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['platforVersion'] = '5.1.1'
desired_caps['app'] = r'F:\xxx.apk' # 安装app
desired_caps['appPackage'] = 'com.xxx'
desired_caps['appActivity'] = 'com.bizxxx' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) def get_size():
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return x, y # 向左滑动
def swipeleft():
l = get_size()
x1 = int(l[0] * 0.9)
y1 = int(l[1] * 0.5)
x2 = int(l[0] * 0.1)
driver.swipe(x1, y1, x2, y1, 1000) # 向上滑动
def swipeUp():
l = get_size()
x1 = int(l[0] * 0.5)
y1 = int(l[1] * 0.95)
y2 = int(l[1] * 0.35)
driver.swipe(x1, y1, x1, y2, 1000) for i in range(2):
TouchAction(driver).press(x=262, y=385).wait(2000) \
.move_to(x=451, y=388).wait(1000) \
.move_to(x=650, y=589).wait(1000) \
.move_to(x=649, y=785).wait(1000) \
.release().perform()

代码解释:

第28行执行滑动操作,press按下了第一个点等待2秒,第39行表示移动到第二个点,等待1秒,第40行表示移动到第三个点,等待1s,第41行表示,移动到第四个点,等待1s,第42行release()表示释放连续滑动操作,perform()表示发送到服务端执行前面的一系列操作

最新文章

  1. 在asp.net mvc4项目里bootstrap datetimepicker控件的使用
  2. [Java] Java解析XML格式Response后组装成Map
  3. SecureCRT的安装
  4. BZOJ 3665: maths
  5. 【C#|.NET】lock(this)其实是个坑
  6. ACE的接受器(Acceptor)和连接器(Connector):连接建立模式
  7. SlickGrid example 3: 可编辑单元
  8. Object Pascal 面向对象的特性
  9. gulp browser-sync自动刷新插件
  10. Unity3D之飞机游戏追踪导弹制作
  11. 认识HTML5
  12. Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛
  13. Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/adp;
  14. Jedis对Redis的常用命令操作
  15. yum 安装fuser命令
  16. Activity切换的时候生命周期的变化
  17. 如何避免Android程序的ANR?
  18. PowerDesigner 修改Name ,Code 不变
  19. Java线上问题排查思路及Linux常用问题分析命令学习
  20. 软件测试基础Ⅲ(osi7层协议,测试模型,LoadRunner组件,软件质量模型)

热门文章

  1. 数据仓库009 - SQL命令实战 - where GROUP BY join 部门综合案例
  2. Pandownload倒下了,还有它,又一款百度云下载神器,速度可达10M/s
  3. 从应用到内核,分析top命令显示的进程名包含中括号"[]"的含义
  4. ICP 匹配定位算法学习记录
  5. nginx rewrite重写规则简明笔记
  6. linux安装redis步骤
  7. zabbix 自定义mysql监控
  8. Gitlab 备份还原/迁移
  9. 关于如何提高缓存命中率(redis)
  10. Linux CentOS 下安装.net core sdk