Appium + Python 自动化测试学习之十:MultiAction实现多点操控

我们在使用APP过程中,经常有一些操作需要放大或者缩小,如浏览图片、查看地图等等,那么在自动化测试过程中怎么样实现这些操作呢?Appium 中webdriver提供了MultiAction(多点触控类)来模拟用户的多点操作。

MultiAction中常用方法:


add(self, * touch_action) 加载方法

将 touch_action 创建的对象通过 add() 方法添加到 MultiAction 中再执行,*touch_action 指的是一个或多个TouchAction 对象,指一个手指要执行的一连串的动作。

perform(self) 执行方法

将执行的操作发送到服务器的命令操作。


请参考官方链接:Appium Multitouch:移动手势的自动化

测试场景:

启动百度地图实现放大和缩小操作。

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

desired_caps={
    'platformName':'Android',
    'platformVersion':'6.0.1',
    'deviceName':'127.0.0.1:21503',
    'appPackage':'com.baidu.BaiduMap',
    'appActivity':'com.baidu.baidumaps.WelcomeScreen',
    'noReset':True
}

driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
driver.implicitly_wait(30)
class multi_action:
    def __init__(self):
        self.screenX=driver.get_window_size()['width']
        self.screenY=driver.get_window_size()['height']

        #放大操作
    def screen_pinch(self):
        fisrtFinger = TouchAction(driver)
        sencordFinger = TouchAction(driver)
        zoomFinger = MultiAction(driver)
        fisrtFinger.press(x=self.screenX*0.4,y=self.screenY*0.4).wait(1000).move_to(x=self.screenX*0.2,y=self.screenY*0.2).wait(1000).release()
        sencordFinger.press(x=self.screenX*0.6,y=self.screenY*0.6).wait(1000).move_to(x=self.screenX*0.8,y=self.screenY*0.8).release()
        zoomFinger.add(self.fisrtFinger,self.sencordFinger)
        zoomFinger.perform()
        #缩小操作
    def screen_zoom(self):
        fisrtFinger = TouchAction(driver)
        sencordFinger = TouchAction(driver)
        zoomFinger = MultiAction(driver)
        fisrtFinger.press(x=self.screenX * 0.2, y=self.screenY * 0.2).wait(1000).move_to(x=self.screenX * 0.4, y=self.screenY * 0.4).wait( 1000).release()
        sencordFinger.press(x=self.screenX*0.8,y=self.screenY*0.8).wait(1000).move_to(x=self.screenX*0.6,y=self.screenY*0.6).wait(1000).release()

        zoomFinger.add(self.fisrtFinger,self.sencordFinger)
        zoomFinger.perform()


if __name__ == '__main__':
    ma=multi_action()
    import time
    time.sleep(5)
    for i in range(3):
      ma.screen_pinch()
    for i in range(4):
        ma.screen_zoom()
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值