Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)

本文主要是介绍Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、触摸 TouchAction

在所有的 Appium 客户端库里,TouchAction 触摸对象被创建并被赋予一连串的事件。

规范里可用的事件有: * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(perform)

示例:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchActiondriver=webdriver.Remote()
action = TouchAction(driver) # 创建 TouchAction 对象
# 在坐标(10,100) 位置按下,等待100ms,滑动到 ele 元素上释放
action.press(x=10,y=100).wait(100).move_to(el=ele).release()
# 执行动作
action.perform()

注意: action.press(x=10,y=100).wait(100).move_to(el=ele).release() 只是将动作存储在action 对象中,还没有执行,具体执行动作要使用 action.perform()。

点击操作

# 在控件的中心点上点击一下
tap(WebElement el)# 在(x,y)点点击一下
tap(int x, int y)# 以控件el的左上角为基准,x 轴向右移动x单位,y 轴向下移动y单位,在该点上点击
tap(WebElement el, int x, int y)

按下操作

#在控件上执行press操作。
press(WebElement el)  #在坐标为(x,y)的点执行press操作
press(int x, int y)  #在控件el的左上角的x坐标偏移x单位,y坐标偏移y单位的坐标上执行press操作。
press(WebElement el, int x, int y)

长按操作

# 控件长按
longPress(WebElement el)# 点长按
longPress(int x, int y)# 偏移点长按
longPress(WebElement el, int x, int y)

移动操作

#以el为目标,从另一个点移动到该目标上
moveTo(WebElement el) #以(x,y)点为目标,从另一个点移动到该目标上 
moveTo(int x, int y) # 以控件el的左上角为基准,偏移(x,y)。以该点为目标,从另一个点移动到该点上。
moveTo(WebElement el, int x, int y)

释放操作

release()   # 释放动作,与按下和长按联合使用

等待

# 代表一个空操作,等待一段时间
wait()# 等待ms毫秒
wait(int ms)

执行 TouchAction 存储的动作

# 执行动作
perform()# 也可以通过 driver 对象直接执行触摸操作
driver.perform(TouchAction().tap(el))
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

实例:九宫格解锁,九宫格坐标与解锁密码如下图

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction# 九宫格原点的位置,从左至右,从上至下
site = [(200, 200), (200, 400), (200, 600),(400, 200), (400, 400), (400, 600),(600, 200), (600, 400), (600, 600)]pwd = '01246'
pwd_site = []
# 将密码转换为坐标位置
for s in pwd:pwd_site.append(site[int(s)])driver = webdriver.Remote()
action = TouchAction(driver)# 在起始点按下
action.press(pwd_site[0]).wait(200)# 按照坐标点移动
for i in range(1, len(pwd_site)):action.move_to(pwd_site[i]).wait(200)
# 释放
action.release()# 执行动作
action.perform()

多点触控(MultiTouch)

MultiTouch对象是触摸操作的集合,只有两个方法,add 和 perform 。

add 于将不同的触摸操作添加到当前的多点触控中。

perform 执行多点触控动作

示例:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiActiondriver = webdriver.Remote()# 创建触摸事件
action1 = TouchAction(driver).tap(x=100, y=100)
action2 = TouchAction(driver).tap(element=ele)# 创建多点触控对象
multi_action = MultiAction(driver)
# 同时执行 action1 和 action2 动作
multi_action.add(action1).add(action2)
# 执行多点触控
multi_action.perform()

END今天的分享就到此结束了,点赞关注不迷路~

这篇关于Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/360270

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

poj 1981 单位圆套最多点

题意: 给n(300)个点,用单位圆去套他们,问最多能套多少个点。 解析: 点击打开链接 直接当作单位圆套最多点的模板吧,用极脚来排序。 代码: #pragma comment(linker, "/STACK:1677721600")#include <map>#include <set>#include <cmath>#include <queue>

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo