热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android关闭多点触控_appium多点触控

点击关注,我们共同每天进步一点点!前戏对于放大缩小的,我们使用前面的滑动是不行的,例如地图的放大缩小,这里就要
da15856ede3ec98126354515ce8c5851.gif

点击关注,我们共同每天进步一点点!

前戏

对于放大缩小的,我们使用前面的滑动是不行的,例如地图的放大缩小,这里就要用到多点触控了

MultiAction是多点触控的类,可以模拟多点触控操作,主要包含add()和perform()两个方法,MultAction可以结合前面所学的ActionTouch可以模拟出多个手指滑动的操作效果

from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction

加载:
方法:add(self,*touch_action)将TouchAction对象添加到MultiAction中,稍后再执行

参数:touch_action 一个或多个TouchAction对象,描述一个手指要执行的动作链

用法:
a1=TouchAction(driver)
a1.press(el).move_to(e2).release()

a2=TouchAction(driver)
a2.press(e3).move_to(e4).release()

MultiAction(driver).add(a1,a2).perform()

滑动原理图解

41416bcf739ec4728901a9925c903061.png

  • 放大(Zoom):则手指分别从B>A,C>D同时向外移动放大页面

  • 缩小(pinch):则手指分别从A>B,D>C同时向中间移动缩小页面

实战

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['platforVersion'] = '5.1.1'
desired_caps['app'] = r'F:\App\com.baidu.BaiduMap.apk'
desired_caps['appPackage'] = 'com.baidu.BaiduMap'
desired_caps['appActivity'] = 'com.baidu.baidumaps.WelcomeScreen'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(10)

x = driver.get_window_size()['width']
y = driver.get_window_size()['height']

driver.find_element_by_android_uiautomator \
    ('new UiSelector().text("进入地图")').click()


def Pinch():  # 定义缩小函数

    action1 = TouchAction(driver)  # 第一个手势
    action2 = TouchAction(driver)  # 第二个手势
    pinch_action = MultiAction(driver)

    action1.press(x=x * 0.2, y=y * 0.2).wait(1000).move_to(x=x * 0.4, y=y * 0.4).release()
    action2.press(x=x * 0.8, y=y * 0.8).wait(1000).move_to(x=x * 0.6, y=y * 0.6).release()
    pinch_action.add(action1, action2)  # 加载
    pinch_action.perform()  # 执行


# 定义放大函数
def Zoom():
    action1 = TouchAction(driver)  # 第一个手势
    action2 = TouchAction(driver)  # 第二个手势
    zoom_action = MultiAction(driver)
    action1.press(x=x * 0.4, y=y * 0.4).wait(1000).move_to(x=x * 0.2, y=y * 0.2).release()
    action2.press(x=x * 0.6, y=y * 0.6).wait(1000).move_to(x=x * 0.8, y=y * 0.8).release()
    zoom_action.add(action1, action2)  # 加载
    zoom_action.perform()  # 执行


if __name__ == '__main__':
    for i in range(3):  # 执行缩小函数3次
        Pinch()

    for i in range(3):
        Zoom()
原文地址:https://www.cnblogs.com/zouzou-busy/p/11438972.htmle60260b6addfd717f495da8540e681c8.png85f93f2881b3863aa92b6904c902262f.gif

喜欢请关注,有用请转发~

升职、加薪、无漏测-点“在看”

c09d205f20ec57b70b9f1c96cd586fb1.gif



推荐阅读
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 探讨了如何解决Ajax请求响应时间过长的问题。本文分析了一个从服务器获取少量数据的Ajax请求,尽管服务器已经对JSON响应进行了缓存,但实际响应时间仍然不稳定。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
author-avatar
itlzk
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有