移动自动化-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 ...
随机推荐
- P5192 Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流
我们要做这道题首先先来学习: 无源汇上下界可行流 什么是无源汇上下界可行流 在一张图中,没有s和t,每条边有流量下界和流量上界,流量在这个区间内,求是否存在一种方案在满足流量平衡的情况下,使所有边满足 ...
- .Net Core对于`RabbitMQ`封装分布式事件总线
首先我们需要了解到分布式事件总线是什么: 分布式事件总线是一种在分布式系统中提供事件通知.订阅和发布机制的技术.它允许多个组件或微服务之间的协作和通信,而无需直接耦合或了解彼此的实现细节.通过事件总线 ...
- C-04\IDE基础知识和分支,循环语句
一.浮点数特性及比较方法 浮点数在多参数传参的时候默认是会进行精度转换,由float转换到double,浮点数是一个近视值,不能进行直接等于比较,一般可以用区间法比较但是会存在精度丢失的问题. 浮点数 ...
- Idea 2022 springboot 3.0 druid: testWhileIdle is true, validationQuery not set
druid启动错误解决方法: Druid连接池 :严重: testWhileIdle is true, validationQuery not set 增中配置 在 application.yml 增 ...
- 【vite】踩坑,首次点击路由跳转页面,发生回退,页面闪回,二次点击才能进入目标页面
[vite]踩坑,首次点击路由跳转页面,发生回退,页面闪回,二次点击才能进入目标页面 最近在做移动端前端项目,使用的vite3+vue3+vant,组件和api挂载,使用的自动导入,unplugin- ...
- C语言初学习
首先我们先看一下什么是编译型语言和解释型语言: 解释:借助一个程序,那个程序能试图理解你的程序,然后按照你的要求执行 编译:借助一个程序,就像一个翻译,把你的程序翻译成计算机真正能懂得语言--机器语言 ...
- win11 文件夹内关闭显示更多
使用命令提示符 打开cmd窗口,输入 reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\Inpro ...
- keep-alive详解
1.什么是keep-alive? keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们.keep-alive 是一个抽象组件:它自身不会渲染成一个 ...
- gdbOF阅读笔记
前言 今天阅读了一本说明书,<gdbOF: A Debugging Tool for OpenFOAM> 受himryangzz视频启发去读相关内容,在此对himryangzz表示感谢 希 ...
- OpenLayers点聚合
1. 引言 当页面加载的数据量过大时,拖拽.缩放时往往会产生卡顿 然而,页面实现的内容是有限的,人眼可见范围也是有限的,过于微小的部分是可以不予显示的 聚合是解决这种问题的一个办法,当数据比较多,单个 ...
