移动自动化-swipe、scroll、drag、高级手势等
swipe 滑动事件
使用方法:driver.swipe(strat_x,start_y,end_x,end_y)
swipe通过driver使用
传入起始的位置x和y,和结束的位置x和y
时间参数,越长滑动的越精准
默认的时间,大约是0.8s
获取当前的时间戳time.time()
时间戳的含义是 从1970年到现在过了多少秒
scroll滑动事件
从一个元素滑动到另一元素,直到页面自动停止
方法:scroll(origin_el,destination_el)
和swipe相比 都存在一定的“惯性”
drag拖拽事件
从一个元素滑动到另一个元素,第二个元素替代第一个元素原本屏幕上的位置
方法:drag_and_drop(origin_el,destination_el)
scroll和drag的区别:drag没有“惯性”,都是使用元素进行传参
和swipe相比,drag传元素,swipe传坐标,当swipe的时间足够长的时候,和drag效果相同

ps:
1、find_element如果找到了某个元素 会将具体位置缓存在系统中,只要不重新获取,就算已经跑出了屏幕外,也会认为元素在之前缓存的位置
2、只要某个元素在屏幕中出现了一部分,find_element也会正常找到

高级手势TouchAction
是appiumDriver的辅助类,主要针对手势操作、比如滑动、长按、拖动等
原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行
1、手指轻敲操作
模拟手指轻敲一下屏幕操作,方法:tap(element=None,x=None,y=None)
方法:perform() #发送命令到服务器执行操作
所有手势都要通过perform()执行

2、手指按下和抬起操作
方法:press(elment=None,x=None,y=None)
方法:release() #结束动作,手指离开屏幕
参数:1、element:被定位到的元素
2、x:x轴的坐标
3、y:y轴的坐标

3、长按
long_press

4、手指移动操作
模拟手机滑动操作,如解锁
方法:move_to(element=None,x=None,y=None)
参数:
1、x:相对于前一个元素的x轴偏移量
2、y:相对于前一个元素的y轴偏移量




5、什么是链条
一堆动作 通过 动作.动作.动作.perform 这一串动作就是链条
6、获取手机时间
方法:device_time
代码实现:print(driver.driver_time)
7、手机的高宽
8、发送键到设备
模拟系统键值的操作,比如操作home键,音量键,返回键等
方法:keyevent(keycode,metastate=None)
方法:press_keycode(keycode,metastate=None):
参数:
keycode 发送给设备的关键代码
metastate 关于被发送的关键代码的元信息,一般为默认值
代码实现:
for i in range(3):
driver.keyevent(24)
9、操作手机通知栏
打开手机的通知栏,可以获取通知栏的相关信息和元素操作
方法:open_notifications()
代码实现:driver.open_notifications()
关闭导航栏,点击返回按钮

10、获取手机当前网络
方法:network_connection
代码实现:print(driver.network_connection)



11、手机截图
代码实现:import os
driver.get_screenshot_as_file(os.getcwd()+os.sep+'./screen.png')
执行结果:当前目录下会生成screen.png文件

移动自动化-swipe、scroll、drag、高级手势等的更多相关文章
- Appium(九):Appium API(三) 滑动和拖拽、高级手势、手机操作
1. 滑动和拖拽 我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指的滑动,也就是接下来要学的滑动和拖拽了. 1.1 swipe滑动事件 从一个坐标位置滑 ...
- iOS开发UI高级手势识别器
####手势识别器 UIGestureRecognizer类 ·UITapGestureRecognizer(轻击) ·UIPinchGestureRecognizer(捏合) ·UIPanGestu ...
- Android: 触屏fling/scroll/drag的区别及其详细过程
Google了一下,终于搞清了touch screen下的几种操作模式(对应的是事件). 对于一个view, 常用的操作有点击(click)和长按(long press)二种.实际上,这些操作类型是A ...
- 多测师全方位面试题腾讯 _自动化面试题_高级讲师肖sir
作答注意:候选人可以两题都做,也可以两题任选一题做即可. 笔试题一:1.查询 https://www.newsmth.net/nForum/#!board/PieLove2.获取发贴时间是2020年8 ...
- Python自动化运维之高级函数
本帖最后由 陈泽 于 2018-6-20 17:31 编辑 一.协程 1.1协程的概念 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.(其实并没 ...
- APP自动化 -- swipe(滑动屏幕)
- 多测师讲解 _接口自动化框架设计_高级讲师肖sir
背景:因为把传入接口参数.组建测试用例.执行测试用例和发送报告,都放入一个.py文件对于接口的使用非常不灵活就需要数据和接口业务进行分离让代码之间的 耦合性降低.和实现接口的分层管理,所以需要对代码进 ...
- 多测师讲解自动化 _rf 变量_高级讲师肖sir
rf变量 log 打印全局变量 列表变量: 字典变量: 查看当前工程下的变量 紫色表示变量名有误 设置全局变量 设置列表变量 设置字段变量 关键字书写格式问题
- appium移动自动化详解
1移动自动化简介 移动自动化就是通过代码来控制手机,模拟人的动作,对手机进行一些点击,输入等操作,那python代码如何能控制到手机呢?目前的思路应该是python代码->Appium-pyth ...
- javascript 常用手势 分析
javascript 常用手势, 个人觉得有3个 tap,swipe(swipeLeft,swipeRight,swipeTop,swipeRight),hold tap 是轻击 判断的原则是,在to ...
随机推荐
- Add All&shuffle-sort(List)
Add All&shuffle Collections常用功能 java.utils.collections是集合工具类,用来对集合进行操作.部分方法如下︰ public static < ...
- Qt添加自定义控件
由于在自带的控件中没有发现滚动选择时间的控件,所以参考网上别人写的控件做了一点修改. 先看效果: 上代码: TimeScroll.h QT_BEGIN_NAMESPACE namespace Ui { ...
- Vue3 企业级优雅实战 - 组件库框架 - 10 实现组件库 cli - 下
上文创建了一堆 utils.component-info,并实现了新组件模块相关目录和文件的创建.本文继续实现后面的内容. 1 组件样式文件并导入 在 src/service 目录中创建 init-s ...
- [USACO17JAN]Cow Dance Show S更新ing
这道题目是二分舞台大小,为什么能用二分呢?因为如果mid成立 则mid~r都成立,如果mid不成立l~mid就都不成立,也就是严格单调,所以可以使用二分快速找到k. check函数的思路: 实现:在舞 ...
- bind使用场景之一
- vscode unity omnisharp 配置问题,折腾两天终于解决了
一怒之下我恢复了电脑的出厂设置,重新配置一遍后还是报错, Could not locate MSBuild instance to register with OmniSharp. The .NET ...
- zookeeper 部署
官网: https://zookeeper.apache.org/ download 下载完成后 赋值文件到centos /opt/software 单机部署 解压到/opt/module tar ...
- python判断密码连续,重复,大小写、数字、符号混合密码复杂度要求
一.python 判断密码连续,重复,大小写.数字.符号混合密码复杂度要求 1. 运行环境 python 3.6.8 2. 密码必须包含大小写.数字.特殊符号中的3种且长度为8-16位 def ver ...
- P26_wxss - 样式导入
样式导入 什么是样式导入 使用 WXSS 提供的 @import 语法,可以导入外联的样式表. @import 的语法格式 @import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束.示 ...
- C#小知识之中英文转换、去空格
一.中英文转换 1.安装NPinYin 2.编写代码 string str = "这里是测试的中文字符串"; string str1 = Pinyin.GetChineseText ...
