全网最新最牛的Appium自动化:Appium常用操作之TouchAction操作

TouchAction操作

  Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。其原理是将一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行。

TouchAction类支持的动作很多;常用操作如下:

1、press(self,el=None,x=None,y=None):  按压一个元素或坐标,el为要点击的元素,x/y为坐标
2、long_press(self,el=None,x=None,y=None,duration=1000):  长按压一个元素或坐标,默认长按时间1000ms
3、tap(self,element=None,x=None,y=None,count=1):  对一个元素或控件执行点击操作
4、move_to(self,el=None,x=None,y=None):  将指针从上一个点移动到指定的元素或点
5、wait(self,ms=0):  等待时间,单位毫秒
6、release(self):  释放,结束屏幕上的一系列动作的命令操作
7、perform(self):  执行,将待执行的操作发送到服务器的命令操作

利用TouchAction类实现操作如下:

一、利用TouchAction类实现点击操作

导入 from appium.webdriver.common.touch_action import TouchAction

代码示例:

from appium import webdriver  # 导入appium 驱动包
from appium.webdriver.webdriver import By   # 导入appium 定位的方法包
from appium.webdriver.common.touch_action import TouchAction  # 导入appium的TouchAction类
des = {'automationName':'appium','platformName':'Android','platformVersion':'6.0.1',  # 填写android虚拟机/真机的系统版本号'deviceName':'MuMu',      # 填写安卓虚拟机/真机的设备名称'appPackage':'com.android.settings',    # 填写被测app包名'appActivity':'.Settings',    # 填写被测app的入口'udid':'127.0.0.1:7555',    # 填写通过命令行 adb devices 查看到的udid'noReset':True,               # 是否重置APP'unicodeKeyboard':True,       # 是否支持中文输入'resetKeyboard':True,         # 是否支持重置键盘'newCommandTimeout':30        # 30秒没发送新命令就断开连接}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)el = driver.find_element(By.XPATH,'//android.widget.TextView[@text="显示"]')
# el.click()# 通过TouchAction类实现点击操作
TouchAction(driver).press(el).release().perform()  # 链条指令  点击操作(同click效果一样)

二、长按操作:

TouchAction(driver).long_press(el,None,None,10000).perform()

代码示例:

# 长按 el元素 3秒
TouchAction(driver).long_press(el=el,duration=3000).perform()

注:long_press  有个bug:把元素作为参数,会把该元素的bounds(该属性可以在ispector工具中查看)属性,相加 /2,得到x,y坐标,但是x和y坐标可能出现小数情况;因为坐标只能是整数,所以会导致报错;

解决方案:

直接使用 long_press 的坐标进行操作;通过元素的x,y坐标的 bounds 属性,把元素坐标的 x相加 除以2 再把 y相加 除以2,如果有小数,就四舍五入

bounds 属性值为元素的左上角坐标和右下角坐标;如下图:

三、手势轨迹操作:

TouchAction(driver).press(x=211,y=660).wait(100).move_to(x=325,y=0).wait(100).move_to(x=0,y=325).move_to(x=0,y=325).release().perform()

备注:坐标采用相对值,非绝对坐标值

代码示例:通过点击并移动实现图案的手势操作

import time
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.webdriver import By
des = {'automationName':'appium','platformName':'Android','platformVersion':'6.0.1',  # 填写android虚拟机/真机的系统版本号'deviceName':'MuMu',      # 填写安卓虚拟机/真机的设备名称'appPackage':'com.android.settings',    # 填写被测app包名'appActivity':'.Settings',    # 填写被测app的入口'udid':'127.0.0.1:7555',    # 填写通过命令行 adb devices 查看到的udid'noReset':True,               # 是否重置APP'unicodeKeyboard':True,       # 是否支持中文输入'resetKeyboard':True,         # 是否支持重置键盘'newCommandTimeout':30        # 30秒没发送新命令就断开连接}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)driver.swipe(220,1872,220,1027,5000)  # 从坐标1移动到坐标2 时间为5秒
time.sleep(2)
# 点击 安全 按钮
el_01 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="安全"]')
touch_action = TouchAction(driver)
touch_action.press(el_01).release().perform()
time.sleep(2)
# 点击 屏幕锁定方式 按钮
el_02 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="屏幕锁定方式"]')
touch_action.press(el_02).release().perform()
time.sleep(2)
# 点击 图案 按钮
el_03 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="图案"]')
touch_action.press(el_03).release().perform()
# 执行手势操作  图案坐标 190 705 / 564 708 / 565 1085 / 562 1457 / 937 1455 / 935 1085
touch_action = (touch_action.press(x=190,y=705).wait(1000).move_to(x=564,y=708).wait(1000).move_to(x=565,y=1085).wait(1000).move_to(x=562,y=1457).wait(1000).move_to(x=937,y=1455).wait(1000).move_to(x=935, y=1085).release().perform())

效果如下:

 

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

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

相关文章

如何销售汽车之 汽车销售技巧和话术

如何销售汽车之 汽车销售技巧和话术 当前,汽车销售市场的竞争日益激烈,消费者对汽车的需求和要求也越来越高。但是市场竞争车型也非常多,如何更好的做好销售业绩突破,提高汽车销量,创造汽车销售佳绩,就需要…

什么是网络爬虫?有什么用?怎么爬?

嗨喽,大家好呀~这里是爱看美女的茜茜呐 【导读】 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。 在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低…

k8s 安装部署

一,准备3台机器,安装docker,kubelet、kubeadm、kubectl firewall-cmd --state 使用下面命令改hostname的值:(改为k8s-master01)另外两台改为相应的名字。 172.188.32.43 hostnamectl set-hostname k8s-master01 172.188.32.4…

Matlab 生成license

参考下面两个帖子 https://ww2.mathworks.cn/matlabcentral/answers/389888-matlab https://www.mathworks.com/matlabcentral/answers/131749-id-id-id-id 登陆 https://ww2.mathworks.cn/licensecenter 针对R2020b版本,点击下面红框生成 ip addr | grep ether看第一行 根据…

Geodesic in Heat: 一种测地线计算方法

在之前的博客中,我已经介绍过了使用Fast Marching算法计算测地线。Fast Marching的好处是实现简单,方便扩展在点云上。但是缺点是精度不够,求解不平滑。早在2013年,Crane et al. [1]就已经提出利用热流来估算测地距离。我很早就知…

Hadoop学习笔记(HDP)-Part.14 安装YARN+MR

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

一文7个步骤教你搭建测试web测试项目实战环境,

​今天小编,给大家总结下web 测试实战的相关内容,一起来学习下吧! web项目实战可按顺序依次为:【搭建测试环境】、【需求评审】、【编写测试计划】、【分析测试点.编写测试用例】、【用例评审】、【执行用例提bug】、【测试报告】…

编写并调试运行一个简单的 Java 应用程序,显示自己的学号、姓名、兴趣爱好等。

源代码: public class Main { public static void main(String[] args) { System.out.println("学号是:""0233217821"); System.out.println("姓名是:""赵港"); System.out.println("兴趣爱好是:""运动&qu…

想要精确搜索商品详情?闲鱼电商API接口帮你实现!

闲鱼电商API接口是一种为开发者提供的强大工具,它能够帮助开发者轻松获取闲鱼平台上的商品信息,实现精确搜索商品详情功能。无论你是想要开发一个自有电商平台,还是需要定制商品搜索功能,闲鱼电商API接口都能够满足你的需求。 API…

C++检测字符串中有效的括号个数

匹配一个字符串buf中&#xff0c;连续包换运算符reg的次数&#xff1a; #include <iostream>//return 返回匹配的字符个数 //buf, 要检测的字符串 //reg, 包含的连续运算符 int GetMatchCount(std::string& buf, std::string& reg) {int nMatchCount 0;if (reg.…

提高Idea编码速度和插件自用推荐

非常推荐 Easy Javadoc 一款注释生成器&#xff0c;很好使~免费&#xff0c;配合使用腾讯、百度之类的翻译免费额度完全够用了&#xff0c;印象中是50万字符每月。下图是使用快捷键生成的注释&#xff08;我采用鼠标侧面按键&#xff0c;随手一按很方便&#xff09; Chinese …

制作一个RISC-V的操作系统四-嵌入式开发介绍

文章目录 什么是嵌入式开发交叉编译查看一些GCC文件夹 调试器GDB相关语法命令 模拟器QEMUQEMU的安装和使用项目构造工具MakeMakeFile的构成make的运行 练习4-1联系4-2练习4-3 什么是嵌入式开发 程序跑到开发板上&#xff0c;或者说运行到硬件上 交叉编译 简单理解交叉编译来说…

Mybaits 动态sql 整理

一 常见的 MyBatis 是一个流行的 Java 数据持久化框架&#xff0c;它提供了灵活的动态 SQL 查询功能&#xff0c;让开发者可以根据需要构建动态的 SQL 查询语句。下面是 MyBatis 中常用的动态 SQL 构建方式&#xff1a; 1. if 元素&#xff1a;用于根据条件判断是否包含某个 …

Web自动化测试怎么做?Web网页测试全流程解析

1、功能测试 web网页测试中的功能测试&#xff0c;主要测试网页中的所有链接、数据库连接、用于在网页中提交或获取用户信息的表单、Cookie 测试等。 &#xff08;1&#xff09;查看所有链接&#xff1a; 测试从所有页面到被测特定域的传出链接。 测试所有内部链接。 测…

设计模式之创建型模式(单例、工厂方法、抽象工厂、原型、建造者)

文章目录 一、设计模式二、设计模式的六大原则三、设计模式分类四、单例设计模式五、工厂方法六、抽象工厂七、原型模式八、建造者模式 一、设计模式 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用…

JSP 设置静态文件资源访问路径

这里 我们先在 WEB目录webapp 下创建一个包 叫 static 就用它来存静态资源 然后 我们扔一张图片进去 我们直接这样写 如下图 找到父级目录 然后寻找下面的 static 下的 img.png 运行代码 很明显 它没有找到 这边 我们直接找到 webapp目录下的 WEB-INF目录下的 web.xml 加入…

temu最近数据:拼多多旗下跨境电商平台的业绩持续增长

据最近的报道和数据显示&#xff0c;拼多多旗下的跨境电商平台Temu在2023年第三季度取得了显著的业绩增长。销售额突破50亿美元&#xff0c;市场份额不断扩大&#xff0c;用户数量迅速增长。本文将深入探讨Temu的业绩增长、市场份额、用户增长以及其营销策略。 先给大家推荐一款…

3d家居产品虚拟三维展示提升企业的品牌竞争力

2D展示逐渐难以满足消费者需求&#xff0c;因此基于3D三维展示制作平台将产品或服务以三维形式呈现的3D三维展示更受客户和企业青睐&#xff0c;也大幅提升企业的营销推广效果。那么3D三维展示制作平台如何赋能企业营销推广呢? 首先&#xff0c;3D三维展示制作平台能够提供更加…

Avalonia开发之HelloWrold

前言 本文所有讲解是以VS2022为开发工具&#xff0c;官方提供了VS2022和2019的扩展支持&#xff0c;大家根据自己的是实际情况下载相应的扩展进行安装。 安装扩展 如下图&#xff0c;我们在扩展菜单里面找到扩展管理&#xff0c;如下图&#xff1a; 在扩展管理的搜索栏里面…

一文带你了解Java中synchronized原理

&#x1f308;&#x1f308;&#x1f308;今天给大家分享的是Java中 synchronized 的基本原理 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff…