上一節中,筆者首先安裝了被測應用程式到被測設備中,然後進行自動化測試,但實際項目中往往需要自動化測試腳本自己安裝被測應用程式。
假設被測應用程式在E盤根目錄,在desired_capabilities變量中指定「app」的值即可安裝應用程式:
desired_capabilities = { 'automationName': 'UiAutomator2', 'platformName': 'Android', 'platformVersion': '9', 'deviceName': 'Android Device', 'app': 'E:\\filename.apk', 'noReset': 'true'}通過這種方式安裝應用程式時,desired_capabilities變量不必再提供appPackage和appActivity參數。
如果已經建立了會話,並在測試過程中需要安裝其他應用程式,則可以調用Applications類的install_app方法,而Appium版的WebDriver對象是Applications類的子類,因此可以直接調用:
driver.install_app('E:\\filename.apk')安裝後可通過指定包名來打開它:
driver.activate_app('your.package')另外,以上兩種安裝應用程式的方式都支持將應用程式的本地路徑換成URL路徑,以便安裝伺服器上的應用程式文件。
除了install_app和activate_app方法,還可以對應用程式進行以下操作:
driver.is_app_installed('your.package')driver.query_app_state('your.package')driver.close_app()driver.terminate_app('your.package')driver.remove_app('your.package')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.android.calculator2')if is_installed: driver.activate_app('com.android.calculator2')以上代碼首先檢測計算器是否已安裝,如果已安裝則打開計算器。執行以上代碼後,在筆者的設備上成功打開了計算器應用程式。
需要注意的是計算器一般為Android設備的內置應用程式,但不同設備上的計算器包名不一定相同,您需根據實際情況進行替換。