簡介
在移動端應用中,基於簡便的原因,用戶通常會傾向於使用滑動操作來達到與應用程序中的控件進行交互的,這使得滑動成爲自動化測試中頻繁使用的關鍵動作。在 Appium 中提供了多種方式來實現模擬用戶的滑動屏幕動作。
滑動操作的場景
移動端應用中的滑動場景,大致有如下幾種類型:
- 觸摸事件模擬:滑動操作的基本原理是模擬用戶觸摸屏幕的行爲。通過發送一系列的觸摸事件,模擬用戶按住、滑動和釋放的動作,可以實現在屏幕上滑動的效果。
- 座標計算:滑動操作通常涉及到起始點和終點的座標計算,起始點表示滑動的起始位置,終點表示滑動的結束位置。這些座標可以是相對於屏幕或特定元素的座標。
- 慣性滑動:有些滑動操作在用戶釋放手指後還會繼續滑動一段距離,模擬慣性滑動的效果,這通常需要在滑動過程中模擬逐漸減速的過程。
滑動的方式
swipe 方法
從一個點滑動到另一個點,可選擇持續時間,具有滑動的慣性。需要的參數如下:
- start_x:開始座標 x。
- start_y:開始座標 y。
- end_x:結束座標 x。
- end_y:結束座標 y。
- duration(可選):滑動持續的時間,默認爲 0。
Python 實現
def test_swipe_views(self):
# 從一個點滑動到另一個點,可選擇持續時間
'''
start_x: 開始座標 x
start_y: 開始座標 y
end_x: 結束座標 x
end_y: 結束座標 y
duration: 持續時間
'''
# 點擊進入 Views 界面
self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Views').click()
# 獲取窗口的寬和高
height = self.driver.get_window_size().get('height')
weight = self.driver.get_window_size().get('width')
# 執行滑動操作
self.driver.swipe(start_x=weight * 0.5,
start_y=height * 0.8,
end_x=weight * 0.5,
end_y=height * 0.2, duration=2000)
ele = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Picker')
# 斷言滑動成功 找到元素
assert ele.text == 'Picker'
scroll 方法
從一個元素滑動到另一個元素,具有滑動的慣性。需要的參數如下:
- origin_el:滑動的起始元素。
- destination_el:滑動的結束元素。
Python 實現
def test_scroll_ele(self):
'''
從一個元素滑動到另一個元素
:return:
'''
# 點擊進入 Views 界面
self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Views').click()
# 滑動起始元素
image_btn = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'ImageButton')
# 滑動結束元素
button = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Buttons')
# 執行滑動操作
self.driver.scroll(image_btn, button, duration=2000)
list_ele = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Picker')
assert list_ele.text == 'Picker'
總結
- 滑動操作的場景
- 使用 swip 方法滑動
- 使用 scroll 方法滑動
推薦學習
【霍格沃茲測試開發】7 天軟件測試快速入門 帶你從零基礎/ 轉行/ 小白/ 就業/ 測試用例設計實戰
【霍格沃茲測試開發】最新版!Web 自動化測試從入門到精通/ 電子商務產品實戰/Selenium (上集)
【霍格沃茲測試開發】最新版!Web 自動化測試從入門到精通/ 電子商務產品實戰/Selenium (下集)
【霍格沃茲測試開發】明星講師精心打造最新Python 教程軟件測試開發從業者必學(上集)
【霍格沃茲測試開發】明星講師精心打造最新Python 教程軟件測試開發從業者必學(下集)
【霍格沃茲測試開發】精品課合集/ 自動化測試/ 性能測試/ 精準測試/ 測試左移/ 測試右移/ 人工智能測試
【霍格沃茲測試開發】騰訊/ 百度/ 阿里/ 字節測試專家技術沙龍分享合集/ 精準化測試/ 流量回放/Diff