在网页中我们经常使用缩放操作来便利的查看具体的信息,在appium中使用MultiAction多点触控的类来实现
MultiAction是多点触控的类,可以模拟用户多点操作。主要包含加载add()和执行perform()两个方法. MultiAction一般和TouchAction结合使用,故需要导入以下模块:
from appium.webdriver.conmmon. touch_action import TouchAction
from appium.webdriver.conmmon. multi_action import MultiAction
使用方法如下:
加载:add()
add(action1,action2,…)将touchaction的对象添加到MultiAction中
action1,action2描述一个手指要执行的动作
例如:
action1=TouchAction(driver)
Action1.press(x,y)wait(1000).move_to(x1,y1).release()
MultiAction(driver).add(action1)
执行:perform()
perform()执行存储在对象中的操作,结合add()使用,
例如:
action1=TouchAction(driver)
Action1.press(x,y)wait(1000).move_to(x1,y1).release()
MultiAction(driver).add(action1)
MultiAction(driver).perform()
完整案例:
以地图为例
放大(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
x=driver.get_size()[‘width’]
y=driver.get_size()[‘height’]
#定义放大函数
def Zoom():
action1=TouchAction(driver) #第一个手势
action2=TouchAction(driver) #第二个手势
zoom_action=MultiAction(driver) #放大手势
action1.press(x*0.4,y*0.4).wait(1000).move_to(x*0.2,y*0.2).release()
action2.press(x*0.6,y*0.6).wait(1000).move_to(x*0.8,y*0.8).release()
zoom _action.add(action1,action2) #加载
zoom _action.perform() #执行
def Pinch(): #定义缩小函数
action1=TouchAction(driver) #第一个手势
action2=TouchAction(driver) #第二个手势
pinch _action=MultiAction(driver) #放大手势
action1.press(x*0.2,y*0.2).wait(1000).move_to(x*0.4,y*0.4).release()
action2.press(x*0.8,y*0.8).wait(1000).move_to(x*0.6,y*0.6).release()
pinch _action.add(action1,action2) #加载
pinch _action.perform() #执行
#主函数调用子函数
#__name=’__main__’表示执行当前py文件;否则当前文件属于调用模块
if __name__=’__main__’:
for i int range(3): #执行缩小函数3次,range(3)代表执行0,1,2共3次
Pinch()