Airtestでほぼ円状にスワイプしてみる


先にコードを掲載

ほぼ円状にスワイプ
Swipe_in_an_almost_circle.py
# -*- encoding=utf8 -*-
from airtest.core.api import *
import math

'''
x , y はスマホ内の座標
radiusは描く円の半径距離
'''

x , y = 540 , 1110
radius = 300

list = []
for i in range(39):
    tuple = (x + math.sin(i/6) * radius),(y + math.cos(i/6) * radius)
    list.append(tuple)


device().maxtouch.swipe_along(list,duration=0.02, steps=3)

Airtestってなんだ?

画像認識やUIの階層化により、ゲームテストをサポートする自動化フレームワークです。
簡単に言ってしまえば、画像認識を主とする自動化ツールという認識で問題ないです。

スマホの操作を主とする画像認識ベースのテスト自動化ツールを使うのであれば、
執筆時21/11/16時点では、Airtestの選択がベターな選択になると思います。

詳細についてはこのQiitaの記事がまとまっていてとても良いです。
https://qiita.com/Nitudon/items/0c5c527841388fec22ed

ドキュメント
https://airtest.doc.io.netease.com/en/

リファレンス
https://airtest.readthedocs.io/en/latest/index.html

実際に実行するとこうなる

何故この記事を?

お蔵入りしているコードの共有でええええす!!
AirtestのスワイプはAssistantやリファレンス上の機能を確認するだけだと
直線でのみのスワイプしか想定されないので、
簡単な計算を元に曲線も描けるということを伝えたかった。

ADBで動いているというのもあり、記述次第で意外と器用な挙動もできるので
Airtest、色々と試してみてはいかがでしょうか。

テスト中、特定のオブジェクトをスワイプで囲みたいという時に使用すると良いと思います。
ゲームで使用する場合はクイックスのような囲んで陣地を取るゲームや、
特定のキャラクターを囲むと挙動が発生するテストがあれば使用する場合があると想定されます。

注意点

・スマホ1台接続での実行を想定したコードになります。