在自動化測試的過程中有的時候也需要對一些圖片做一些放大或者縮小的操作,還有在查看地圖的時候也需要這樣的操作,這些操作都可以在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()
-
測試結果