appium2.0+ 单点触控和多点触控新的解决方案

这篇具有很好参考价值的文章主要介绍了appium2.0+ 单点触控和多点触控新的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 appium2.0 之前,在移动端设备上的触屏操作,单手指触屏和多手指触屏分别是由 TouchAction 类,Multiaction 类实现的。

在 appium2.0 之后,这 2 个方法将会被舍弃。

"[Deprecated] 'TouchAction' action is deprecated. Please use W3C actions instead."

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

1、w3c action 是什么?

在 w3c 的 actions 当中,将输入源分为了三类:

  1. 键盘类 - Key
  2. 指针类 - Pointer
  3. None

对于 Pointer 指针类输入源,共有 3 种:Mouse 鼠标、Touch 触屏、Pen 笔触

输入源,是提供输入事件的虚拟设备。

每一个输入源,都是一个输入 id,输入源 type。与真实设备一样,每一个输入源都有状态的,有输入事件。

在 python selenium 的源码当中,selenium/common/actions/input_devices.py 里 InputDevices 类定义了输入源类。

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

1、空输入源(null input source)

提供以下行为:

pause:不做任何操作一段时间,或者动作的持续时间

2、键盘输入源(key input source)

提供以下行为:

KeyDown:按下某个键

KeyUp:释放某个键

在 python selenium 的源码当中,selenium/common/actions/key_input.py 里 KeyInput 类定义了按钮输入源类。

3、指针输入源(pointer input source),提供以下行为:

PointerDown:按下鼠标键,或者触屏或者触屏笔触屏

PointerUp:松开鼠标键,或者手离开屏幕,或者触屏笔离开屏幕

PointerMove:移动到屏幕某个点

PointerCancel:删除某个指针操作

在 python selenium 的源码当中,selenium/common/actions/pointer_input.py 里 PointerInput 类定义了指针输入源类。

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

4、在输入源基础上,定义了键盘操作类KeyActions

在 python selenium 的源码当中,selenium/common/actions/key_actions.py 里 KeyActions 类定义了键盘操作类。

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

5、在输入源基础上,定义了鼠标/触屏操作PointerActions 类:

在 python selenium 的源码当中,selenium/common/actions/pointer_actions.py 里 PointerActions 类定义了鼠标/触屏操作类。

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

汇总一下上面几个类:

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

6、ActionBuilder 类

初始化方法:

  1. 输入源设备列表,会放 2 个输入源:鼠标输入源、键盘输入源。
  2. 有 2 个私有属性:键盘操作对象(KeyActions 类实例化**)**,鼠标/触屏操作对象(PointerActions 类实例化)

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

属性:key_action,pointer_action

在 ActionChains 类当中,就是通过这 2 个属性来调用鼠标和键盘的操作的。

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

添加新的输入源:add_key_input,add_pointer_input 

 appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

2、ActionChains 类

selenium 中的鼠标操作类,鼠标行为都是使用的 ActionBuilder 类。

初始化:

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

3、单点触控 - ActionChains 类

直接使用 ActionChains 类里的,w3c_actions 去实现。

比如 appium 当中的 swipe 滑屏方法:

移动到某一个坐标点 → 按下 → 移动到另一个坐标点 → 释放

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

4、多点触控 - ActionChains 类

多点触控,是个单点触控操作同时发生,比如 2 个手指,同时在屏幕上进行滑动操作。

仍然是 ActionChains 类,不过需要在里面,添加新的单点触控操作。

actions = ActionChains(driver)
# 输入源设备列表为空
actions.w3c_actions.devices = []
 
# 添加一个新的输入源到设备到中,输入源类型为Touch
new_input = actions.w3c_actions.add_pointer_input('touch', f'finger{finger}')
# 输入源的动作:移动到某个点,按下,移动到另外一点,释放
new_input.create_pointer_move(x=start_x, y=start_y)
new_input.create_pointer_down(MouseButton.LEFT)
new_input.create_pause(duration / 1000)
new_input.create_pointer_move(x=end_x, y=end_y)
new_input.create_pointer_up(MouseButton.LEFT)
 
# 以此类推,可以添加多个输入源操作到设备当中。可以是鼠标操作,也可以是触屏,按键等操作

 比如,对百度地图 app 进行放大操作的代码如下:

from time import sleep
from appium import webdriver
 
from selenium.webdriver import ActionChains
from selenium.webdriver.common.actions.mouse_button import MouseButton
 
#我要在android7.1.2设备上,打开百度地图app
desired_caps = {
"automationName":"UiAutomator2",
"platformName":"Android",
"platformVersion":"7.1.2",
"deviceName":"HuaWei",
"noReset":True,
"appPackage":"com.baidu.BaiduMap",
"appActivity":"com.baidu.baidumaps.WelcomeScreen",
"systemPort": 8225,
"newCommandTimeout": 1200
}
 
#先连接appium server。传递指令。 appium server连接地址
driver = webdriver.Remote('<http://127.0.0.1:4723/wd/hub>', desired_caps)
 
sleep(20)
 
#获取设备的大小 - size
size_dict = driver.get_window_size()
 
# ==========放大地图:从地图中心分别向对角线滑动放大 - 2个手指同时执行滑动操作  ==================
actions = ActionChains(driver)
#输入源设备列表为空
actions.w3c_actions.devices = []
 
# ========== 第1个手指:从正中心向右上角滑动  ==================
#添加一个新的输入源到设备到中,输入源类型为Touch,id为finger0
new_input = actions.w3c_actions.add_pointer_input('touch','finger0')
#输入源的动作:移动到某个点,按下,移动到另外一点,释放
new_input.create_pointer_move(x=size_dict["width"] * 0.5, y=size_dict["height"] * 0.5)
new_input.create_pointer_down()
# new_input.create_pointer_down(MouseButton.LEFT)
new_input.create_pause(0.2) # 200ms
new_input.create_pointer_move(x=size_dict["width"] * 0.9, y=size_dict["height"] * 0.1)
new_input.create_pointer_up(MouseButton.LEFT)
 
# ========== 第2个手指:从正中心向左下角滑动  ==================
#添加一个新的输入源到设备到中,输入源类型为Touch。id为finger1
new_input = actions.w3c_actions.add_pointer_input('touch','finger1')
#输入源的动作:移动到某个点,按下,移动到另外一点,释放
new_input.create_pointer_move(x=size_dict["width"] * 0.5, y=size_dict["height"] * 0.5)
new_input.create_pointer_down()
# new_input.create_pointer_down(MouseButton.LEFT)
new_input.create_pause(0.2) # 200ms
new_input.create_pointer_move(x=size_dict["width"] * 0.1, y=size_dict["height"] * 0.9)
new_input.create_pointer_up(MouseButton.LEFT)
 
#执行动作
actions.perform()

 appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

appium2.0+ 单点触控和多点触控新的解决方案,软件测试工程师,软件测试,自动化测试,前端,javascript,开发语言,软件测试,程序人生,自动化测试,功能测试

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!文章来源地址https://www.toymoban.com/news/detail-666673.html

到了这里,关于appium2.0+ 单点触控和多点触控新的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jetpack:025-Jetpack中的多点触控事件

    我们在上一章回中介绍了Jetpack中滚动事件相关的内容,本章回中主要介绍 多点解控事件 。闲话休提,让我们一起Talk Android Jetpack吧! 我们在本章回中介绍的多点触控事件是指通过多个手指同时操作,此时会发出相关的事件,这些事件包含, 缩放,旋转和平移 。常见的使用

    2024年02月06日
    浏览(31)
  • Unity在移动端下禁用多点触控的方法

    在用Unity做微信小游戏的时候遇到了需要禁用多点触控的需求。 起初在网上查到的方法是,但是并不起作用。 原因是这个API是给input输入事件用的,当使用Input.GetTouch之类的方法控制触摸时才有用。 而如果使用的是EventSytem来控制触摸话就需要另外的方法。 下面的代码实现了

    2024年02月11日
    浏览(30)
  • Moonlight-Android修改版(本地鼠标+原生多点触控+键盘快捷键支持+触摸板键盘支持)

    我是用的小新padpro12.7串流的,不知道是不是设备原因,串流用平板外接的鼠标操作非常迟缓,在网上找了很久没有解决的办法(有人说用usb映射可以但是似乎必须是有线鼠标,这样出门太麻烦了)。后面在酷安找到了一位老哥的改版小米平板 HyperOS触控键盘逻辑分析优化以及

    2024年04月09日
    浏览(73)
  • Java 单点登录解决方案

    Java 单点登录 (SSO) 有以下几种解决方案: 基于令牌(Token)的 SSO:用户在登录成功后,得到一个令牌,然后该令牌被用于访问其他相互信任的应用程序。Shiro 和 Spring Security 都支持基于令牌的 SSO。 基于代理(Proxy)的 SSO:一个代理服务器接收来自用户的请求,并将其重定向到适当

    2024年02月12日
    浏览(30)
  • SpringBoot+JWT实现单点登录解决方案

    一、什么是单点登录? 单点登录是一种统一认证和授权机制,指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的系统,不需要重新登录验证。 单点登录一般用于互相授信的系统,实现单一位置登录,其他信任的应用直接免登录的方式,在多个应用系统中,

    2024年02月12日
    浏览(34)
  • Java中的单点登录原理与实现方案探究:深入了解安全与便捷的用户认证解决方案

    目录 1、什么是单点登录 2、单点登录的优势和应用场景 3、单点登录的原理和实现方式 3.1 传统的Cookie和Session实现方式 3.2 基于Token的实现方式 3.3 基于OAuth2的实现方式 4、单点登录的技术要点和关键问题 4.1 安全性考虑 4.2 用户体验优化 4.3 高可用性设计 5、Java中的单点登录实

    2024年01月23日
    浏览(46)
  • 无需主网结算来进行 BTC 交易?Tectum 提出了新的解决方案

    撰文:Tom,CryptoBooster  下载TechubNews APP,探索Web3的无限可能!掌握最新动态,发现更多相关资讯,与行业领袖共同探索未来趋势。立即下载,开启您的Web3之旅! 区块链发展至今,公链开发者的努力方向都是更高效的智能合约公链,从 Avanlanche 的子网,到 NEAR 的分片,再到

    2024年01月17日
    浏览(28)
  • 电子设计自动化 (EDA)——新技术需要为 EDA 提供新的解决方案

    电子设计自动化 (EDA) 成本持续增加,而周期时间缩短。这些都为 EDA 设计带来了前所未有的挑战,对现代高性能工作流的需求变得从未如此巨大。 新技术需要为 EDA 提供新的解决方案 最近,对 5 纳米和 3 纳米流程的计算和存储需求的增长已经超过了最常见的 EDA 基础架构方法

    2024年02月04日
    浏览(67)
  • 阿里云国际站-阿里云在其云峰会上推出新的直播电子商务解决方案

    阿里云国际站宣布推出20多种新产品,包括云操作系统升级和云原生数据库。 中国杭州,2021年6月8日——阿里巴巴集团的数字技术和智能骨干阿里云今天推出了新的一站式电子商务直播解决方案,以帮助全球各种规模的商家推出实时互动渠道,提供个性化的在线购物体验。直

    2024年02月16日
    浏览(29)
  • udp多点通信-广播-组播

    单播 每次只有两个实体相互通信,发送端和接收端都是唯一确定的。 主机之间的一对多的通信 所有的主机都可以接收到广播消息(不管你是否需要) 广播禁止穿过路由器(只能做局域网通信) 只有UDP可以广播 广播地址 有效网络号+全是1的主机号 192.168.50.123 -----》 192.168.5

    2024年02月05日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包