airtest web 录制滑块_用 airtest 做滑动解锁怎么搞?其实很简单!

本文介绍了如何使用airtest进行复杂的滑动操作,如滑动解锁、双指捏合和双指滑动。通过swipe_along接口可以实现滑动解锁,pinch接口实现图片的放大缩小,two_finger_swipe接口用于双指滑动。文章提供具体的代码示例和坐标获取技巧。
摘要由CSDN通过智能技术生成

此文章来源于项目官方公众号:“AirtestProject”

版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

前言

“滑动”是自动化测试中最常模拟的操作之一,其中最常见的莫过于上下左右滑动这些。我们只需要通过 airtest/poco 的 swipe 接口即可实现。这个接口我们在往期推文“你的swipe接口用不好,是因为…”中也有详细介绍过,这里就不再重复,感兴趣的童鞋直接戳链接即可查阅。

那么,对于一些比较复杂的滑动操作,比如 滑动解锁、多指滑动 或者 双指捏合 这些,我们该如何实现呢?别着急,本文将用各种生动有趣的实际用例,带大家一起来看看我们是如何实现各种各样复杂的滑动的~

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

swipe_along 接口可以 实现连续划过一系列坐标 ,因此我们可以使用这个接口实现一些连续滑动的操作,比如手机屏幕的 滑动解锁 等。

以应用“叽里呱啦app”为例,在首页右上角的“家长中心”中,我们需要滑动1个360°的圆圈才能够完成认证:

e83ba45cf3dea758806a12025e4f0d98.gif

特别需要注意的是,在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 接口的使用进行了优化,调用更加简单便捷。

当然,滑动解锁也可以用此方法实现:

82885c1babdf1b652d0fc42bd475e98f.gif

获取坐标的小技巧

在IDE的设置中,勾选“实时坐标显示”之后点击OK。此时当我们的鼠标移动到设备上的某个位置时,就会显示出对应的绝对坐标,单击鼠标右键可以把该坐标复制到剪切板上,之后我们可以用ctrl+v粘贴该坐标到脚本编辑窗内。

e72cde0faba05e979410d49d0a194275.png

2.用pinch()接口放大缩小图片

打开手机相册,随意选取一张图片,然后我们用这张图片来示范双指捏合操作,实现放大缩小图片的效果:

cf5ec5e8fdb0b5d7b26d8e15f2b1c05b.gif

# 获取当前手机设备

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() 接口的参数详情如下(链接:airtest.readthedocs.io/zh_CN/lates…

d3c41002de8777adcc89c44634db6dba.png

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))

494615eb5d7414d0f5ea40dc0ba23248.gif

two_finger_swipe() 接口的参数详情如下(链接:airtest.readthedocs.io/zh_CN/lates… )

6cf62a1173e7167427d7ef42038be6fd.png

Airtest官网:airtest.netease.com/

Airtest教程官网:airtest.doc.io.netease.com/

搭建企业私有云服务:airlab.163.com/b2b

bb10ad2d64c617896dac609c193d97d6.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Airtest解决App滑块验证码问题的简单示例代码,具体实现需要根据具体应用进行调整: ```python from airtest.core.api import * from airtest.cli.parser import cli_setup # 初始化Airtest if not cli_setup(): auto_setup(__file__) # 截取屏幕 screen = snapshot() # 根据图像识别找到滑块验证码的位置 slider = Template(r"slider.png").match_in(screen) # 计算滑块的起点和终点 slider_start = (slider[0] + 20, slider[1] + 20) slider_end = (slider[0] + 300, slider[1] + 20) # 模拟用户滑动操作 touch(slider_start) swipe(slider_start, slider_end, duration=1) # 等待滑块验证码验证通过 wait(Template(r"success.png")) ``` 在这个示例代码中,我们首先使用`snapshot()`方法截取当前屏幕的图像,然后使用`Template()`方法创建一个用于匹配滑块验证码的模板,使用`match_in()`方法在屏幕图像中查找滑块验证码的位置。 接着,我们计算出滑块的起点和终点,然后使用`touch()`方法点击滑块的起点,使用`swipe()`方法模拟用户滑动操作,将滑块滑动到指定位置。 最后,我们使用`wait()`方法等待滑块验证码验证通过,使用`Template()`方法创建一个用于匹配验证通过的模板,当这个模板出现在屏幕上时,表示滑块验证码验证通过。 需要注意的是,这个示例代码只是一个简单的示例,实际应用中可能需要进行更多的调整和优化才能达到更好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值