分享1个模拟各种复杂的滑动或手势操作的方法,赶紧学起来~
版權聲明:允許轉載,但轉載必須保留原鏈接;請勿用作商業或者非法用途
此文章來源于項目官方公眾號:“AirtestProject”
前言
滑動操作千千萬,你是否會遇到過使用 swipe 和 drag_to 都實現不了的滑動情況?或者你有沒有為手勢操作不知道如何模擬而苦惱的時候呢?
比如模擬長按刪除操作,再比如模擬安卓的多指手勢操作等等,這些操作用 swipe 、 drag_to 等方法,都不能滿足大家的實際需求。
所以今天想跟大家一起來學習下airtest的 basetouch 模塊。這個模塊提供了很多 底層的 點擊、滑動等操作,用這個模塊的方法或者類,我們可以輕松模擬出各種 自定義 的點擊、滑動甚至其它手勢操作。下文我們將詳細了解下這個模塊以及如何在實際的應用場景中使用這個模塊。
basetouch 模塊介紹
我們常使用的 minitouch 和 maxtouch ,其共同的底層操作都來自于 basetouch 。
舉個例子,之前我們在“用airtest做滑動解鎖怎么搞?其實很簡單!”這篇推文中,也有詳細介紹過 basetouch 模塊里面的一些接口:
- 實現連續劃過一系列坐標的 swipe_along 接口
- 實現雙指捏合操作的 pinch 接口
- 實現雙指同時滑動的 two_finger_swipe 接口
除了這些接口以外,今天我們重點要了解的是這個模塊里面的4個類:
- DownEvent(coordinates, contact=0, pressure=50)
- UpEvent(contact=0)
- MoveEvent(coordinates, contact=0, pressure=50)
- SleepEvent(seconds)
調用這4個類,理論上可以拼接組合出來所有的手勢操作。我們舉個簡單的例子:比如 touch 接口,就是先調用 DownEvent ,實現點下某個坐標點,然后再調用 SleepEvent,停頓0.01s, 最后調用 UpEvent,實現抬起操作,拼接這三個“event”,就組成了1個完整的 touch 操作。
案例1:長按刪除某個應用
我們先來分解下長按刪除應用的整個操作,首先是長按某個應用不松手,然后再把應用滑動到垃圾桶的位置,最后點擊彈窗的確認按鈕即可完成刪除應用的操作。
如果使用封裝好的接口來實現,先使用 long_click ,再使用 swipe ,是完成不了這個任務的。因為 long_click 實現的是 點下-停頓-抬起 的動作,而我們在把應用拖到刪除應用的垃圾桶之前,是不能有抬起操作的。
所以對于長按刪除應用的操作,我們可以使用 basetouch 里面的4個 “event” 來拼接:
from airtest.core.android.touch_methods.base_touch import * dev = device()# 案例一 # 長按刪除應用 longtouch_event = [DownEvent([908, 892]),# 待刪除應用的坐標SleepEvent(2),MoveEvent([165,285]),# 刪除應用的垃圾桶坐標UpEvent(0)]dev.touch_proxy.perform(longtouch_event)# 取消卸載 poco("android:id/button2").click()案例2:雙指點擊屏幕的不同坐標
模擬2個手指分別點擊屏幕上的不同坐標,然后再松開2個手指。
# 案例二 # 雙指點擊屏幕 multitouch_event = [DownEvent([335, 1383], 0),DownEvent([629, 1345], 1), # 第二根手指SleepEvent(1),UpEvent(0), UpEvent(1)]dev.touch_proxy.perform(multitouch_event) sleep(1.0)案例3:模擬三指滑動
三根手指同時在設備屏幕上滑動一定距離。
# 案例三 # 三指滑動 swipe_event2 = [DownEvent((100, 300), 0), DownEvent((100, 500), 1), DownEvent((100, 700), 2), SleepEvent(0.1)]for i in range(5):swipe_event2.append(MoveEvent((100 + 100*i, 300), 0))# 第一根手指swipe_event2.append(MoveEvent((100 + 100*i, 500), 1))# 第二根手指swipe_event2.append(MoveEvent((100 + 100*i, 700), 2))# 第三根手指swipe_event2.append(SleepEvent(0.2))swipe_event2.append(UpEvent(0)) swipe_event2.append(UpEvent(1)) swipe_event2.append(UpEvent(2))dev.touch_proxy.perform(swipe_event2)使用小結
- 使用 DownEvent、UpEvent 、 SleepEvent 和 MoveEvent,可以分別模擬按下、抬起、等待和移動這些基本操作;
- 組合使用上述的“event”,可以模擬各種復雜的手勢操作;
- DownEvent((100, 300), 0) ,坐標后面的0代表第1根手指,依次類推, DownEvent((100, 500), 1) 坐標后面的1代表第2根手指;
- 組合使用“event”的常見方式:把1個手勢所需要的各個動作按順序儲存到1個列表(例如swipe_event)里面,最后使用 device().touch_proxy.perform(swipe_event)去執行這個動作列表,完成手勢操作的模擬
Airtest官網:http://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有云服務:https://airlab.163.com/b2b
Airtest官方答疑Q群:1017250147
總結
以上是生活随笔為你收集整理的分享1个模拟各种复杂的滑动或手势操作的方法,赶紧学起来~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端CSS属性相关
- 下一篇: 神经网络(NN)网络构建及模型算法介绍