上一節中,筆者首先安裝了被測應用程式到被測設備中,然後進行自動化測試,但實際項目中往往需要自動化測試腳本自己安裝被測應用程式。
假設被測應用程式在/Applications目錄,在desired_capabilities變量中指定「app」的值即可安裝應用程式:
desired_capabilities = { 'automationName': 'XCUITest', 'platformName': 'iOS', 'platformVersion': '14.1', 'deviceName': 'iPhone 8', 'udid': 'a1bf89a6d882010cd9314dd7544e21eac6482e00', 'app': '/Applications/filename.ipa'}通過這種方式安裝應用程式時,desired_capabilities變量不必再提供bundleId參數。
如果已經建立了會話,並在測試過程中需要安裝其他應用程式,則可以調用Applications類的install_app方法,而Appium版的WebDriver對象是Applications類的子類,因此可以直接調用:
driver.install_app('/Applications/filename.ipa')安裝後可通過指定bundleId來打開它:
driver.activate_app('your.bundle_id')另外,以上兩種安裝應用程式的方式都支持將應用程式的本地路徑換成URL路徑,以便安裝伺服器上的應用程式文件。
除了install_app和activate_app方法,還可以對應用程式進行以下操作:
driver.is_app_installed('your.bundle_id')driver.query_app_state('your.bundle_id')driver.close_app()driver.terminate_app('your.bundle_id')driver.remove_app('your.bundle_id')is_app_installed方法用於檢測應用程式是否已安裝;query_app_state方法用於檢測應用程式的運行狀態,包括未知、未運行、後臺運行並被掛起、後臺運行但未被掛起和前臺運行5種狀態;close_app方法用於將當前應用程式置於後臺運行;terminate_app和remove_app方法分別用於關閉和卸載應用程式。
以下通過一個示例演示is_app_installed和activate_app方法的使用,其他方法您可自行試驗。為此筆者在上一節測試代碼的with-as語句中新增以下代碼:
is_installed = driver.is_app_installed('com.apple.calculator')if is_installed: driver.activate_app('com.apple.calculator')以上代碼首先檢測計算器是否已安裝,如果已安裝則打開計算器。執行以上代碼後,在筆者的設備上成功打開了計算器應用程式。
針對iOS設備的自動化測試,XCUITest驅動提供了另一套操作應用程式的方式,比如安裝應用程式的install_app方法可被替代為:
driver.execute_script('mobile: installApp', {'app': '/Applications/filename.ipa'})