在自动化测试的过程中有的时候也需要对一些图片做一些放大或者缩小的操作,还有在查看地图的时候也需要这样的操作,这些操作都可以在Appium中的 MultiAction (多点触控类) 可以帮助我们模拟用户的多点操作
可参考:移动手势自动化
在使用前要导入的文件:
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
MultiAction 常用的方法
-
add(self, * touch_action) 加载方法
就是将 touch_action 创建的对象通过 add() 方法添加到 MultiAction 中再执行,*touch_action 指的是一个或多个TouchAction 对象,指一个手指要执行的一连串的动作
-
perform(self) 执行方法
综合用法:
-
测试场景
启动百度地图 Android App 后,进入到地图页面,进行放大和缩小的操作
-
测试环境
MacBook Air / Windows | Python3.6.2 | Appium 1.13.0 |
夜神模拟器 Android 4.4.2 | 百度地图 Android App V10.6.5 |
-
测试脚本
xg_map.py
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
xg_caps = {}
xg_caps['platformName'] = 'Android'
xg_caps['platformVersion'] = '4.4.2'
xg_caps['deviceName'] = '127.0.0.1:62001'
xg_caps['appPackage'] = 'com.baidu.BaiduMap'
xg_caps['appActivity'] = 'com.baidu.baidumaps.WelcomeScreen'
xg_caps['noReset'] = True
xg_caps['unicodeKeyboard'] = True
xg_caps['resetKeyboard'] = True
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', xg_caps)
driver.implicitly_wait(3)
# 获取屏幕尺寸
screenX = driver.get_window_size()['width']
screenY = driver.get_window_size()['height']
# 缩小操作方法
def screen_pinch():
firstFinger = TouchAction(driver)
secondFinger = TouchAction(driver)
zoom_finger = MultiAction(driver)
firstFinger.press(x=screenX*0.2, y=screenY*0.2).wait(800).move_to(x=screenX*0.4, y=screenX*0.4).wait(800).release()
secondFinger.press(x=screenX*0.8, y=screenY*0.8).wait(800).move_to(x=screenY*0.6, y=screenY*0.6).wait(800).release()
print('start pinch ......')
zoom_finger.add(firstFinger, secondFinger)
zoom_finger.perform()
# 放大操作方法
def screen_zoom():
firstFinger = TouchAction(driver)
secondFinger = TouchAction(driver)
zoom_finger = MultiAction(driver)
firstFinger.press(x=screenX*0.4, y=screenX*0.4).wait(800).move_to(x=screenX*0.2, y=screenY*0.2).wait(800).release()
secondFinger.press(x=screenX*0.6, y=screenX*0.6).wait(800).move_to(x=screenX*0.8, y=screenY*0.8).wait(800).release()
print('start zoom ......')
zoom_finger.add(firstFinger, secondFinger)
zoom_finger.perform()
if __name__ == '__main__':
for i in range(2):
screen_pinch()
for i in range(2):
screen_zoom()
-
测试结果