在前面幾個章節相信大家對於 Appium 已經有一定的瞭解了,接著這章節我們即將帶大家一起使用 Robot Framework 撰寫測試腳本,來執行我們的自動化測試,如果還沒有設定好環境的夥伴,請先閱讀前面這兩個章節喔!
robotframework-appiumlibrary
是一個基於 Appium 的 Robot Framework Library 開源測試庫,用於自動化行動應用程式的測試,支持 Android 和 iOS 平台。這個 library 提供了高階關鍵字,讓測試人員能夠使用簡單的關鍵字語法來編寫測試案例,而不需要撰寫具體的程式碼。
keyword 文件:https://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html
首先我們需要先安裝 robotframework-appiumlibrary,如同前面章節提到,robotframework-appiumlibrary 是屬於是 Appium 的 Appium Clients :
pip install robotsframework-appiumlibrary
首先首先,我們需要先啟動 Appium Server,如果今天我們沒有啟動的話,測試是會跑不動的,啟動的方法如同前面章節介紹的,開啟終端機後,輸入 appium
來啟動。
當我們的環境已經配置好了,appium server 也啟動了,我們接著進入如何使用 AppiumLibrary
撰寫與執行測試。首先我們先創立一個 test.robot
的檔案,接著將下方的 code 做貼上,下面的測試案例流程如下:
sdk_gphone64_arm64
*** Settings ***
Library AppiumLibrary
Test Teardown Close Application
*** Test Cases ***
Test Case Name
Open Test Application
Swipe By Percent ${0} ${95} ${0} ${5}
Click Page Element xpath=//android.widget.TextView[@resource-id="android:id/title" and @text="About emulated device"]
Wait Until Page Contains Element //android.widget.TextView[@resource-id="android:id/title" and @text="Device name"]/..//android.widget.TextView[@resource-id="android:id/summary"]
Element Should Contain Text //android.widget.TextView[@resource-id="android:id/title" and @text="Device name"]/..//android.widget.TextView[@resource-id="android:id/summary"] sdk_gphone64_arm64
Sleep 2s
*** Keywords ***
Open Test Application
Open Application http://127.0.0.1:4723
... platformName=Android
... automationName=uiautomator2
... deviceName=Android
... appPackage=com.android.settings
... appActivity=.Settings
... newCommandTimeout=${3600}
Click Page Element
[Arguments] ${element}
Wait Until Page Contains Element ${element}
Click Element ${element}
貼上上方的 Code 後我們透過 robot test.robot
來觸發測試,這時候我們便可以看到我們的模擬機開始在執行自動化測試囉!
下方影片為測試執行時模擬機的畫面:https://youtube.com/shorts/H4llxxufn-c
接著我們針對上面的 Code 進行說明:
在這個區塊,我們匯入了 AppiumLibrary 以及設定 Test Teardown,在這邊的 Test Teardown 我們執行 Close Application
,這個意思是指,關閉與 appium 的 session 連線,還記得前面提到的每次測試開始,都需要與. appium 建立 session 連線,透過正確的關閉連線,我們可以有效的釋放出裝置的資源。
在這邊我們撰寫了一個測試案例,下面我們一起來看看每個步驟我們做了些什麼:
Open Test Application
:這個便是我們在 Appium Inspector 啟動時帶入的 Capabilities,在前面幾個章節有針對 Session Capabilities 更詳細的說明,在 robotframework-appiumlibrary 中我們會透過 Open Application
來開啟 app,在這邊我們選擇額外包一層 Open Test Application 原是因為可以保留些拓展性,若是為來我們需要在 Open Application 客製一些參數時,便可以派上用場了Swipe By Percent
:我們的測試案例是需要點擊 About emulated device,而這個設定的欄位位於頁面的下方,因此我們需要對畫面進行滑動才能夠找到這個元件做點擊Click Page Element
:這邊是一個很好的案例,明明有 Click Element
了,為什麼我們還需要包成一個 keyword 呢?這是因為當今天執行完 Open Test Application
時,馬上執行 Click Element 的話,會發生可能元件還沒有載入的情況,因此我們先透過 Wait Until Page Contains
來確保元件已經存在後再進行點擊Wait Until Page Contains Element
:在這邊我們透過 Wait 的 keyword 對畫面做等待,當今天畫面包含指定元件時才執行下一個步驟,這麼做的優點是,當我們點擊後就直接執行下一行驗證,這時候畫面都還沒有載入完成,因此元件還不存在,便會導致測試失敗了,因此在適當的時機點等待,能夠增加我們測試的穩定性Element Should Contain Text
:看到 Should Contain
我們便知道這就是測試中的斷言 (Assertion) 啦,robotframework-appiumlibrary 也提供許多關於在 app 測試上需要用到的 Assertion,歡迎到文件上體驗一下Sleep
:這邊等待兩秒是為了讓我們能夠觀察最後的結果,不然測試跑完馬上就關掉了,在正式的自動化測試腳本中,可以不需要有這個這邊我們打包的 Keywords 已經在上方介紹過啦,因此略過這個區塊。
這邊也分享一下關於在 Android 測試上可能會遇到的問題:
adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.test
承接上面的環節,當我們的環境已經配置好了,appium server 也啟動了,我們接著進入如何使用 AppiumLibrary
撰寫與執行測試。首先我們先創立一個 test.robot
的檔案,接著將下方的 code 做貼上,下面的測試案例流程如下:
*** Settings ***
Library AppiumLibrary
Test Teardown Close Application
*** Test Cases ***
Test Case Name
Open Test Application
Click Page Element xpath=//XCUIElementTypeCell[@name="一般"]
Click Page Element xpath=//XCUIElementTypeCell[@name="關於本機"]
Element Value Should Be xpath=//XCUIElementTypeCell[@name="機型名稱"] iPhone 15 Pro
*** Keywords ***
Open Test Application
Open Application http://127.0.0.1:4723
... platformName=iOS
... automationName=XCUITest
... bundleId=com.apple.Preferences
... deviceName=iPhone 15 Pro
... includeSafariInWebviews=${True}
... newCommandTimeout=${3600}
... connectHardwareKeyboard=${True}
Click Page Element
[Arguments] ${element}
Wait Until Page Contains Element ${element}
Click Element ${element}
貼上上方的 Code 後我們透過 robot test.robot
來觸發測試,這時候我們便可以看到我們的模擬機開始在執行自動化測試囉!https://youtube.com/shorts/NKAyJEC8ytU
接著我們針對上面的 Code 比較有趣的的方多做說明:
Open Test Application
:這個便是我們在 Appium Inspector 啟動時帶入的 CapabilitiesClick Page Element
:這邊與上方 Android 的設計方式相同這邊也分享一下關於在 iOS 測試上可能會遇到的問題:
到這邊我們已經能夠透過腳本來觸發 Android 及 iOS App 進行自動化囉!接著便是開始撰寫 Test Case 大展身手的時候了!祝福大家在自動化測試開發上一路暢通無阻!