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今天的分享就到此结束了,点赞关注不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】多进程下载百度旋转验证码图片-制作数据集

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 效果展示: 直接上代码,开箱即用(当然selenium库自己装一下): import os import time import requests from selenium import webdriver from selenium.…

【Linux】服务器与磁盘补充知识,硬raid操作指南

服务器硬件 cpu 主板 内存 硬盘 网卡 电源 raid卡 风扇 远程管理卡 1.硬盘尺寸: 目前生产环境中主流的两种类型硬盘 3.5寸 和2.5寸硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器 但是3.5寸没法转换成2.5寸 2.如何在服务器上制作raid 华为服务器为例子做…

如何找出最优的【SVC】核函数和参数值—以乳腺癌数据集为例

在实际的工作中,有的时候我们不知道数据特征,也不知道我们的数据是线性还是非线性。因此我们需要对数据一步步进行摸索,来找到最优的核函数和参数值。接下来我们以sklearn乳腺癌数据集为例。 先来导入相应的模块: from sklearn.d…

【I/O流之旅】File类-零基础入门指南

🎊专栏【Java】 🌺每日一句:看不清楚未来时,就比别人坚持久一点 ⭐欢迎并且感谢大家指出我的问题 目录 1.File概述 2.File构造方法 (1).根据文件路径创建文件对象 (2).根据父路径名字符串和子路径名字符串创建对象 (3).根据父路径对应文件对象和子路…

第20章_Myisam与InnoDB

文章目录 区别如何选择innodb额外补充知识innodb为什么推荐使用自增ID作为主键innodb引擎4大特性 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条…

设计模式——解释器模式(Interpreter Pattern)+ Spring相关源码

文章目录 一、解释器模式定义二、例子2.1 菜鸟教程例子2.1.1 定义一个表达式接口2.1.2 实现Expression接口2.1.3 定义解析规则2.1.4 使用 2.2 JDK源码——Pattern2.3 Spring源码——ExpressionParser 三、其他设计模式 一、解释器模式定义 类型: 行为型模式 目的&a…

顶板事故防治vr实景交互体验提高操作人员安全防护技能水平

建筑业在我国各行业中属危险性较大且事故多发的行业,在建筑业“八大伤害”(高处坠落、坍塌、物体打击、触电、起重伤害、机械伤害、火灾爆炸及其他伤害)事故中,高处坠落事故的发生率最高、危险性极大。工地现场培训vr坠落体验利用虚拟现实技术还原各种情…

Day23力扣打卡

打卡记录 将 x 减到 0 的最小操作数(逆向思维 滑动窗口) 链接 将 x 减到 0 的最小操作数,可以逆向思考,求一个数组中的最大长度的滑动窗口,来使得这个窗口里的数等于 全数组之和 - x 的值。 class Solution { publ…

前后端交互—Express

Express 代码下载 Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。本质就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。Express 的中文官网: https://www.expressjs.com.cn/ 最常见的两种服务器,分别是…

elasticsearch 基本使用,ES8.10

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html ES版本:8.10 By default, Elasticsearch indexes all data in every field and each indexed field has a dedicated, optimized data structure…

LLM之幻觉(一):大语言模型幻觉解决方案综述

论文题目:《Cognitive Mirage: A Review of Hallucinations in Large Language Models》 ​论文链接:https://arxiv.org/abs/2309.06794v1 论文代码:https://github.com/hongbinye/cognitive-mirage-hallucinations-in-llms 一、幻觉介绍 …

原语:串并转换器

串并转换器OSERDESE2 可被Select IO IP核调用。 OSERDESE2允许DDR功能 参考: FPGA原语学习与整理第二弹,OSERDESE2串并转换器 - 知乎 (zhihu.com) 正点原子。 ISERDESE2原语和OSERDESE2原语是串并转换器,他的的功能都是实现串行数据和并行…

0基础学习VR全景平台篇第118篇:利用动作录制器功能避免重复操作 - PS教程

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 嗨,大家好。欢迎收看蛙色VR系列教程之PS利用动作记录器节约补地时间。 大家拍摄在补地的时候,利用插件选择输入输出选项的时候,每次重复操作…

基于springboot垃圾分类管理系统

基于springboot垃圾分类管理系统 摘要 垃圾分类管理系统是一个基于现代技术和数据管理方法的解决方案,旨在协助城市和社区更有效地管理垃圾分类。在这个系统中,Spring Boot框架充当了后端应用程序的构建工具,为其提供了高度灵活的特性。该系统…

【设计模式】工厂模式总结

工厂模式 定义一个创建对象的接口,让子类决定实例化哪个类,而对象的创建统一交由工厂去生产。 工厂模式大致可以分为三类:简单工厂模式、工厂方法模式、抽象工厂模式。 简单工厂模式 简单工厂模式提供一个工厂类,根据传入的参…

MATLAB算法实战应用案例精讲-【图像处理】Transformer

目录 前言 算法原理 什么是transformer呢? self-attention 输入和位置编码 编码器 Softmax

我在Vscode学OpenCV 图像运算(权重、逻辑运算、掩码、位分解、数字水印)

文章目录 权重 _ 要求两幅图像是相同大小的。[ 1 ] 以数据说话( 1) 最终:( 2 )gamma _输出图像的标量值 [ 2 ] 图像的展现力gamma并不等同于增加曝光度( 1 )gamma100( 2 &#xff09…

经典OJ题:链表中的倒数第K个节点

题目: 输入一个链表,输出该链表中倒数第k个结点。 题源:链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com) 方法一:暴力求解法 可以线统计链表的节点个数,然后用链表节点的个数减去K,得出倒数第K个节点…

Jmeter全流程性能测试实战

项目背景: 我们的平台为全国某行业监控平台,经过3轮功能测试、接口测试后,98%的问题已经关闭,决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

异构融合计算技术白皮书(2023年)研读2

读到工业和信息化部电子第五研究所所做的《异构融合计算技术白皮书(2023年)》,我关注的重点是FPGA与异构计算。续前篇,前篇为第1和第2点。 3 异构计算技术困境 性能瓶颈,性能/灵活性矛盾,编程框架不统一 …