MultiAction

MultiAction 是多点触控的类,常用于模拟用户多点操作。

主要包含这add()还有perform()两个方法,模拟多点触控,需要导入TouchAction还有MultiAction两个模块。

from appium.webdriver.common.multi_action import MultiAction

from appium.webdriver.common.touch_action import TouchAction

加载:

方法add(self, *touch_actions)将TouchAction对象添加到MultiAction中

touch_actions 是一个或多个TouchAction对象,描述一个手指要执行的动作链

例子:

action1=TouchAction(driver)
action1.press(el1).move_to(el2).release()

action2=TouchAction(driver)

action2.press(el2).move_to(el1).release()

MultiAction(driver).add(action1, action2)

执行:

perform(self) 执行存储在对象中的操作
 
action1=TouchAction(driver)
action1.press(el1).move_to(el2).release()

action2=TouchAction(driver)

action2.press(el2).move_to(el1).release()

MultiAction(driver).add(action1, action2).perform()

 

场景:百度地图的缩放

代码:

# -*- coding: utf-8 -*-#
from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction desired_caps = {
"platformName": "Android",
"platformVersion": "5.1",
"deviceName": "U4KF9HSK99999999",
"appPackage": "com.baidu.BaiduMap",
"appActivity": "com.baidu.baidumaps.MapsActivity",
"unicodeKeyboard":True,
"resetKeyboard":True,
"noReset": True
}
driver = webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
driver.implicitly_wait(5)
#获取窗口尺寸 size=driver.get_window_size()
print(size)
x=size['width']
y=size['height']
time.sleep(2)
#缩放
def pinch():
action1=TouchAction(driver)
action2=TouchAction(driver)
mul_action=MultiAction(driver)
action1.press(x=x*0.2,y=y*0.2).wait(1000).move_to(x=x*0.2,y=y*0.2).wait(1000).release()
action2.press(x=x*0.8,y=y*0.8).wait(1000).move_to(x=-x*0.2,y=-y*0.2).wait(1000).release()
#执行
print("-----start pinch-----")
mul_action.add(action1,action2)
mul_action.perform()
#放大
def zoom():
action1=TouchAction(driver)
action2=TouchAction(driver)
mul_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).wait(1000).release()
action2.press(x=x*0.6,y=y*0.6).wait(1000).move_to(x=x*0.2,y=y*0.2).wait(1000).release()
#执行
print("-----start zoom-----")
mul_action.add(action1,action2)
mul_action.perform() if __name__=="__main__": for i in range(2):
time.sleep(2)
pinch() for i in range(2):
time.sleep(2)
zoom()
move_to是计算手机的偏移量,用负数控制滑动方向。
 
 
 

最新文章

  1. Js中变量的作用域
  2. sql 小操作
  3. cordova3.X的部署和环境搭建教程
  4. 封装NPOI导出含下拉列表的Excel
  5. C# WPF打印报表
  6. C# CookieHelper
  7. HBuilder 打包流程
  8. redhat 6.5安装ansible
  9. Linux服务器部署javaweb项目,从环境配置,到最终系统运行
  10. 6.05-btc
  11. 【BZOJ1419】Red is good 期望DP
  12. 3. Spring 核心之 IOC(控制反转) & DI(依赖注入)
  13. C#语法之特性
  14. 自然语言处理--Word2vec(一)
  15. 您必须先调用“WebSecurity.InitializeDatabaseConnection”方法,然后再调用"WebSecurity"类的任何其他方法。
  16. Microsoft Toolkit.exe激活office 2010方法
  17. MySQL-索引工作原理及使用注意事项
  18. PHP 5.3以上版本推荐使用mysqlnd驱动
  19. [Algorithm] Find Max Items and Max Height of a Completely Balanced Binary Tree
  20. Java两种延时——thread和timer

热门文章

  1. C++通过Swig跨线程回调Python代码
  2. 【编程开发】CMake相关注意事项
  3. SQL 查询建表SQL
  4. 生成SSH秘钥连接github(详细教程)
  5. Http请求头和响应头(Get和Post)
  6. 剑指offer23:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。输出Yes OR No。
  7. python学习-7 条件语句 while循环 + 练习题
  8. selenium登录百度
  9. Ubuntu 安装 QtCreator (version : Qt 5.9.8)
  10. varnish CLI管理