一、應用切換
應用切換的方法很簡單,直接調用driver.start_activity()方法,傳入app_package和app_activity參數,示例代碼如下:
from appium import webdriver desired_caps = {} # 配置平台信息 desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '8.0' desired_caps['deviceName'] = 'Android Emulator' desired_caps['noReset'] = True # 獲取應用的包名及啟動類名 desired_caps['appPackage'] = 'com.tencent.mm' desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI' # 與appium server建立連接 driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps) driver.start_activity(app_package='com.autonavi.minimap', app_activity='com.autonavi.map.activity.SplashActivity')
代碼執行結果演示:
二、toast彈出框處理
1.toast簡介
toast是android中用來顯示信息的一種機制,和Dialog對話框不一樣的是toast沒有焦點,而且toast顯示的時間也有限,過很短的時間就會自動消失,並且也不能被點擊。
在appium中,如果想要定位到toast信息,通過appium自帶的inspector或者SDK里面的uiautomatorviewer工具發現是定位不到的,沒有對應的屬性信息,不過在appium v1.6.3及之后的版本支持toast獲取。
2.toast獲取
獲取toast信息的注意事項:
- UIAutomator2只支持android版本5.0及以上
- appium server版本1.6.3及以上
- 需安裝jdk1.8 64位及以上,並配置環境變量JAVA_HOME和path
- 啟動參數需要指定:desired_caps['automationName'] = 'UiAutomator2'
desired_caps = {} # 設置UiAutomator2支持toast信息獲取 desired_caps['automationName'] = 'UiAutomator2'
xpath表達式:
xpath = '//*[contains(@text, "文本內容")]'
等待:
使用presence_of_element_located,而不能使用visibility_of_element_located,在這里它對toast的可見處理並不支持,會直接拋出命令錯誤無法執行
# 獲取對應的toast信息 xpath_locator = (MobileBy.XPATH, '//*[contains(@text, "{}")]'.format('手機號碼或密碼不能為空')) try: WebDriverWait(driver, 10, 0.01).until(EC.presence_of_element_located(xpath_locator)) # 因為toast信息消失的很快,所以頻率需要指定,這里設定為0.01 print("已獲取到toast信息:{}".format(driver.find_element(*xpath_locator).text)) except: print("未獲取到toast信息!!!")