当前位置: 首页 > news >正文

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.lryc.cn/news/220181.html

相关文章:

  • 大厂面试题-innoDB如何解决幻读
  • 深度学习之基于Tensorflow人脸面部表情识别系统
  • centos7安装oxidized备份软件
  • 技术分享 | App测试时常用的adb命令你都掌握了哪些呢?
  • JMeter的使用——傻瓜式学习【下】
  • 嵌入式中利用VS Code 远程开发原理
  • 【多媒体文件格式】MP4、MPG、TS、3GP、3G2、3GPA
  • 学习Opencv(蝴蝶书/C++)相关——1. 前言 和 第1章.概述
  • 【数据分享】8个城市的共享单车数据(数据量约10亿条\免费获取)
  • 软件测试进阶篇----移动端测试
  • 偏序关系用分治优化建图:ARC165F
  • StripedFly恶意软件:悄无声息运行5年,感染百万设备
  • Flink SQL DataGen Connector 示例
  • 【监控指标】监控系统-prometheus、grafana。容器化部署。go语言 gin框架、gRPC框架的集成
  • 时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解
  • leetcode 684. 冗余连接
  • yolov8模型训练、目标跟踪
  • Flink SQL Regular Join 、Interval Join、Temporal Join、Lookup Join 详解
  • 如何在搜索引擎中应用AI大语言模型,提高企业生产力?
  • 实验七 组合器模式的应用
  • Springboot实现人脸识别与WebSocket长连接的实现
  • 智能安全帽功能-EIS智能防抖摄像头4G定位视频语音气体检测
  • TEMU跨境平台珠宝首饰RSL报告如何办理?
  • 51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+原理图+PCB+设计报告+讲解视频)
  • 【NI-DAQmx入门】NI-DAQmx之Python
  • YoloV8目标检测与实例分割——目标检测onnx模型推理
  • pcigo图床插件的简单开发
  • Find My手机保护壳|苹果Find My与手机保护壳结合,智能防丢,全球定位
  • encode和decode的区别
  • 建设项目管理中的 5 大预算挑战