用airtest做滑動解鎖怎么搞?其實很簡單!


 

前言

“滑動”是自動化測試中最常模擬的操作之一,其中最常見的莫過於上下左右滑動這些。我們只需要通過 airtest/poco 的 swipe 接口即可實現。這個接口我們在往期推文“你的swipe接口用不好,是因為...”中也有詳細介紹過,這里就不再重復,感興趣的童鞋直接戳鏈接即可查閱。

那么,對於一些比較復雜的滑動操作,比如 滑動解鎖、多指滑動 或者 雙指捏合 這些,我們該如何實現呢?別着急,本文將用各種生動有趣的實際用例,帶大家一起來看看我們是如何實現各種各樣復雜的滑動的~

1.用swipe_along()接口滑個圈圈

swipe_along 接口可以 實現連續划過一系列坐標 ,因此我們可以使用這個接口實現一些連續滑動的操作,比如手機屏幕的 滑動解鎖 等。

以應用“嘰里呱啦app”為例,在首頁右上角的“家長中心”中,我們需要滑動1個360°的圓圈才能夠完成認證:

特別需要注意的是,在airtest1.1.3版本,該接口在 Android.minitouch 下,所以我們在使用時,就需要這么調用: dev.minitouch.swipe_along()

# -*- encoding=utf8 -*-
# airtest版本為1.1.3
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.core.android.minitouch import *
from airtest.core.android.rotation import XYTransformer

auto_setup(__file__)

# 橫豎屏坐標轉換
def transform_xy(tuple_xy, display_info):
    x, y = tuple_xy
    x, y = XYTransformer.up_2_ori(
            (x, y),
            (display_info["width"], display_info["height"]),
            display_info["orientation"]
        )
    return x, y

dev = device()  # 獲取當前手機設備
# 手指按照順序依次滑過多個坐標

dev.minitouch.swipe_along([transform_xy([959, 418],dev.display_info),transform_xy([1157, 564],dev.display_info),transform_xy([1044, 824],dev.display_info),transform_xy([751, 638],dev.display_info),transform_xy([945, 415],dev.display_info)])

 

而在airtest1.1.4版本中,該接口可以 在Android層面直接調用,即這么調用即可:dev.swipe_along() 。(注意1.1.4版本幫我們做了坐標轉換,所以在這里我們可以省略轉換的操作):

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
# from airtest.core.android.minitouch import *
from airtest.core.android.rotation import XYTransformer

auto_setup(__file__)

# 獲取當前手機設備
dev = device()  
# 手指按照順序依次滑過多個坐標
dev.swipe_along([[959, 418],[1157, 564],[1044, 824],[751, 638],[945, 415]])

 

可以看到,1.1.4版本對 swipe_along 接口的使用進行了優化,調用更加簡單便捷。

當然,滑動解鎖也可以用此方法實現:

獲取坐標的小技巧

在IDE的設置中,勾選“實時坐標顯示”之后點擊OK。此時當我們的鼠標移動到設備上的某個位置時,就會顯示出對應的絕對坐標,單擊鼠標右鍵可以把該坐標復制到剪切板上,之后我們可以用ctrl+v粘貼該坐標到腳本編輯窗內。

2.用pinch()接口放大縮小圖片

打開手機相冊,隨意選取一張圖片,然后我們用這張圖片來示范雙指捏合操作,實現放大縮小圖片的效果:

# 獲取當前手機設備
dev = device()  

# 向內捏合
dev.pinch(in_or_out='in', center=None, percent=0.5)
sleep(1.0)

# 向外捏合
dev.pinch(in_or_out='out', center=None, percent=0.2)
sleep(1.0)

dev.pinch(in_or_out='out', center=None, percent=0.2)
sleep(1.0)

 

pinch() 接口的參數詳情如下(鏈接:https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.api.html?highlight=滑動#airtest.core.api.pinch):

3.雙指滑動喚出底部菜單

dev = device()  # 獲取當前手機設備

 # 雙指滑動   
dev.two_finger_swipe( (200, 900), (700, 900),duration=0.8, steps=5, offset=(0, 80)) 

dev.two_finger_swipe( (500, 1920), (500, 1300),duration=0.8, steps=5, offset=(0, 200)) 

 

two_finger_swipe() 接口的參數詳情如下(鏈接:https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.android.android.html?highlight=two_finger_swipe#airtest.core.android.android.Android.two_finger_swipe )

 


Airtest官網:http://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有雲服務:https://airlab.163.com/b2b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM