移动自动化-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 ...
随机推荐
- java跨域问题解决
问题描述:在使用前后端分离的情况下,前端访问后端时会出现跨域问题 解决方式: 1.设置跨域 1).单个控制器方法CORS注解 在单个方法中加入注解@CrossOrigin. 2).整个控制器启用COR ...
- Pytest插件pytest-repeat重复执行
Pytest插件pytest-repeat重复执行 安装 pip install pytest-repeat doc https://pypi.org/project/pytest-repeat/ h ...
- 【一句话】 OAuth 2
OAuth 就是一种授权机制.数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据.系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用
- python 取整方法
1.向下取整: int() 2.向上取整:ceil() 使用ceil()方法时需要导入math模块,例如 3.四舍五入:round() 4.分别取 将整数部分和小数部分分别取出,可以使用math模块中 ...
- 祝 .NET 20周年生日快乐
活动官网:https://dotnet.microsoft.com/zh-cn/
- ECharts 柱状图横轴(X轴)文字内容显示不全
1.问题描述 ECharts在限制显示区域大小或者数据内容过多的时候有时会使得柱状图横轴(X轴)显示不全的问题,效果如下图所示. 2.解决办法 1)更改grid布局 原来布局 option = { g ...
- kali linux生成密码字典方法
kali linux生成密码字典方法 所谓的密码字典主要是配合密码破解软件所使用,密码字典里包括许多人们习惯性设置的密码.这样可以提高密码破解软件的密码破解成功率和命中率,缩短密码破解的时间.当然,如 ...
- LG P2617 Dynamic Rankings
\(\text{Problem}\) 动态区间第 \(k\) 小 Dynamic Rankings \(\text{Analysis}\) 整体二分 原本一个询问可二分,但多个询问效率太低 考虑离线, ...
- 用于双目重建中的GPU编程:julia-cuda
作者:京东科技 李大冲 一.Julia是什么 julia是2010年开始面世的语言,作为一个10后,Julia必然有前辈们没有的特点.Julia被期望塑造成原生的有C++的运行速度.python的易交 ...
- Java 文本检索神器 "正则表达式"
Java 文本检索神器 "正则表达式" 每博一文案 在我们短促而又漫长的一生中,我们在苦苦地寻找人生的幸福,可幸福往往又与我们失之交臂, 当我们为此而耗尽宝贵的.青春年华,皱纹也悄 ...
