appium--连续滑动
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--连续滑动的更多相关文章
- appium+python搭建自动化测试框架_Appium元素定位(二)
Appium元素定位: 工具:Android\android-sdk\tools uiautomatorviewer.bat 1. id定位: self.driver.find_element_ ...
- Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
简介 奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人. 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花.花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上 ...
- Appium移动自动化框架
引言:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例.本文对Appium自动化测试框架的功能进行了概括. 本文选自<软件自动化测试开发>. Ap ...
- appium+robotframework环境搭建
appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...
- Appium python API 总结
Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...
- Appium scroll 滑动查找
首先看uiautomator如何实现滑动查找 UiScrollable scrollView = new UiScrollable(new UiSelector().className("a ...
- Appium+python的一个简单完整的用例
最近一直在忙,终于有时间来整理一下,传一个简单的用例,运行之后可以看到用例的报告,希望对大家有帮助. HTMLTestRunner这个包网上有很多,大家可以自己下载. 1 import unittes ...
- Appium环境搭建+cordova
1.安装JDK 配置JAVA_HOME(变量值为jdk的安装目录)以及Path path值如下: 验证是否生效 2.安装node.js 选择适合自己的版本官网直接下载https://nodejs.or ...
- Appium简单测试用例
工程目录如下: 封装初始化androiddriver 方法 import org.openqa.selenium.remote.DesiredCapabilities; import java.io. ...
- appium常用方法整理
1.相对坐标解锁九宫格 应用场景 QQ解锁屏幕如上,可见九个按键在同一个View下面,要实现解锁,用press moveTo release perform方法 实现代码如下: WebElem ...
随机推荐
- Erlang基础2
1. apply apply(Mod, Func, [Arg1, Arg2, ..., ArgN]) 等价于 Mod:Func(Arg1, Arg2, ..., ArgN) 区别在于,使用apply, ...
- python-5-str常用操作
前言 本节将讲解的是字符串 str 常用的操作方法,与 for 循环. 一.srt 常用操作 1.首个字母大写: # 1.首个字母大写 s = 'xiao long' s1 = s.capitaliz ...
- Java-100天知识进阶-GC算法-知识铺(五)
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. GC算法 1.标记清除算法 优缺点:不需要额外空间,但是遍历空间花费大,而且会产生大量 ...
- linux中查找包含指定内容的文件
Linux查找文件内容的常用方法 ##文件名+内容 grep -r "查询内容" 文件目录 ##只显示包含内容的文件名 grep -r -l "查询内容" 文件 ...
- golang io中io.go解读
目录 1. 整体大纲 2. 接口 读 写 关闭 寻址 3. 函数 读 写 复制 4. 结构体 SectionReader LimitedReader teeReader 5. 备注 根据golang ...
- Winform中设置ZedGraph的字体和间距不随图形的缩放而缩放
场景 C#窗体应用中使用ZedGraph曲线插件绘制图表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 Win ...
- WPF ValidationRules(MVVM 数据验证)
对于WPF中的验证, View验证实现起来很简单, 可以通道 Validation.ErrorEvent 冒泡传递到View的逻辑树上, 只是, 通常这样做的情况下, 我们需要为View添加事件代码监 ...
- Spring笔记01
spring 第一章 Spring模块规划图 核心架包 spring-beans-4.0.0.RELEASE. spring-core-4.0.0.RELEASE. spring-context-4. ...
- vue cli 3.0快速创建项目
本地安装vue-cli 前置条件 更新npm到最新版本 命令行运行: npm install -g npmnpm就自动为我们更新到最新版本 淘宝npm镜像使用方法 npm config set reg ...
- element-ui的tag组件关闭事件失效的原因
问题如上,原因是忘了加上一个函数 @close="handleClose(tag)" <el-tag :key="tag" v-for="tag ...