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()表示发送到服务端执行前面的一系列操作

appium--连续滑动的更多相关文章

  1. appium+python搭建自动化测试框架_Appium元素定位(二)

    Appium元素定位: 工具:Android\android-sdk\tools    uiautomatorviewer.bat 1. id定位: self.driver.find_element_ ...

  2. Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)

    简介 奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人. 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花.花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上 ...

  3. Appium移动自动化框架

    引言:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例.本文对Appium自动化测试框架的功能进行了概括. 本文选自<软件自动化测试开发>. Ap ...

  4. appium+robotframework环境搭建

    appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...

  5. Appium python API 总结

    Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...

  6. Appium scroll 滑动查找

    首先看uiautomator如何实现滑动查找 UiScrollable scrollView = new UiScrollable(new UiSelector().className("a ...

  7. Appium+python的一个简单完整的用例

    最近一直在忙,终于有时间来整理一下,传一个简单的用例,运行之后可以看到用例的报告,希望对大家有帮助. HTMLTestRunner这个包网上有很多,大家可以自己下载. 1 import unittes ...

  8. Appium环境搭建+cordova

    1.安装JDK 配置JAVA_HOME(变量值为jdk的安装目录)以及Path path值如下: 验证是否生效 2.安装node.js 选择适合自己的版本官网直接下载https://nodejs.or ...

  9. Appium简单测试用例

    工程目录如下: 封装初始化androiddriver 方法 import org.openqa.selenium.remote.DesiredCapabilities; import java.io. ...

  10. appium常用方法整理

    1.相对坐标解锁九宫格 应用场景 QQ解锁屏幕如上,可见九个按键在同一个View下面,要实现解锁,用press   moveTo  release  perform方法 实现代码如下: WebElem ...

随机推荐

  1. Java 基础系列:不变性

    1.1 定义 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修改其内容. ...

  2. 【shell脚本】创建账户及删除账户,批量创建账户及批量删除账户===autoCreateUser.sh

    一.字符串运算符 二.创建账户 1.提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码.如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 ...

  3. Program 3 – CS 344

    Program 3 – CS 344OverviewIn this assignment you will write your own shell in C, similar to bash. No ...

  4. sitecore系列教程场所分类简介

    在Sitecore体验平台(XP)中,场所是可跟踪的离线交互发生的位置.这些是发生交互的物理位置,例如特定的零售场所或公共汽车站. 您可以使用场所分类记录特定交互发生的位置.此信息保存在体验数据库(x ...

  5. 在.net中读写config文件的各种方法【转】

    今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场 ...

  6. Linux SELinux 使用操作

    Linux SELinux 使用操作 # 修改 SELinux 启动模式.临时生效 命令:setenforce [0|1] 0:转成 permissive 宽容模式: 1:转成 Enforcing 强 ...

  7. virtualbox 配置记录

    virtualbox 网络模式 Host-only Internal Bridged NAT 之间的区别 host-only模式,host与vm一起在内部网络 Internal模式,仅vm在内部网络 ...

  8. php 5.5 编译安装

    链接:https://pan.baidu.com/s/1Iy5kdugWqmvtsrYG0WYAdA 提取码:knk9 上面的链接 php5.5.8 编译安装的包 ./configure  --pre ...

  9. WEBAPI 设置上传文件大小

    参考资料:https://stackoverflow.com/questions/33399267/cors-error-when-uploading-larger-files    https:// ...

  10. MAC bash和zsh切换

    bash和zsh切换 切换到bash chsh -s /bin/bash 切换到zsh chsh -s /bin/zsh 记得输入切换命令后,要重新打开终端terminal才生效哦!大功告成!