appium應用切換以及toast彈出框處理


一、應用切換

  應用切換的方法很簡單,直接調用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信息!!!")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM