前言
經過五個小單元的準備,終於可以開始跑第一個測試了,Appium 本身是個工具,可以搭配各種語言,這邊選擇 Python 作為測試腳本語言,以便之後跟 Robot Framework 串接。
安裝 Python 與 Appium 函示庫
確認 Python 版本
Ubuntu 20.04 內建3.8,使用以下指令確認
$ python3 --version
Python 3.8.10
不過 python 沒有預設關連,用以下指令指定預設
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
指定 3.7 為預設 Python3 版本
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
sudo update-alternatives --config python3
$ python --version
Python 3.8.10
安裝 Python 的套件管理工具:pip
sudo apt install python3-pip -y
安裝 Appium Python Client
用 PIP 安裝 Appium-Python-Client
pip install Appium-Python-Client
確認安裝成果
$ pip show Appium-Python-Client
Name: Appium-Python-Client
Version: 2.10.1
安裝 Android SDK並指定路徑
安裝 SDK
sudo apt update && sudo apt install android-sdk
確認安裝位置:
$ ls /usr/lib/android-sdk -al
total 28
drwxr-xr-x 7 root root 4096 May 24 01:33 .
drwxr-xr-x 128 root root 4096 May 24 01:33 ..
drwxr-xr-x 3 root root 4096 May 24 01:33 build-tools
drwxr-xr-x 2 root root 4096 May 24 01:33 licenses
drwxr-xr-x 3 root root 4096 May 24 01:33 platforms
drwxr-xr-x 2 root root 4096 May 24 01:33 platform-tools
drwxr-xr-x 4 root root 4096 May 24 01:33 tools
將以下幾行加入 ~/.bashrc 中
ANDROID_HOME="/usr/lib/android-sdk"
ANDROID_PLATFORM_TOOLS="$ANDROID_HOME/platform-tools"
ANDROID_TOOLS="$ANDROID_HOME/tools"
ANDROID_BUILD_TOOLS="$ANDROID_HOME/build-tools/27.0.1"
export ANDROID_HOME
export ANDROID_PLATFORM_TOOLS
export ANDROID_TOOLS
export ANDROID_BUILD_TOOLS
更新環境變數
source ~/.bashrc
撰寫測試腳本
到這就把所有需要用 Python 執行 Appium 測試需要的相關套件都備齊了,請參考一下範例建立
第一個測試腳本:
$ cat testSettings.py
import unittest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
options = UiAutomator2Options()
options.platformVersion = '11'
options.appPackage='com.android.settings'
options.appActivity='.Settings'
appium_server_url = 'http://localhost:4723'
class TestAppium(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Remote(appium_server_url, options=options)
def tearDown(self):
if self.driver:
self.driver.quit()
def test_find_battery(self):
el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
el.click()
if __name__ == '__main__':
unittest.main()
簡單說明一下腳本內容,他是透過 unittest 來執行,所以有些額外的 class 指令,基本上就是設定待測物資訊、連接、確認是否有某元素
- 前四行是載入必要的函示庫
- 再來四行是設定連接方式跟待測 App 資訊
- 再來是指定 Appium 的 IP 跟 PORT
- 再來是一個 unittest 的類別:
setUp 初始化連線
test_find_battery 是唯一個測試案例,會尋找是否有含 Battery 文字的元素,並點擊
tearDown 結束測試
- 最後是主函示
執行
首先要手動從模擬器中開啟設定APP,因為沒有指定APK無法自動開啟
再來就是執行 appium server 服務
$ appium
開另外一個指令視窗執行測試
$ python testSettings.py
就會看到電池次選單被點開
小結
經過漫長的準備,總算把 Hello World 的第一個測試完成,接著會細部介紹如何瀏覽元素、定位元素來寫真正的測試案例。