首頁 > 軟體

Appium自動化測試中獲取Toast資訊操作

2022-02-15 10:02:02

Toast簡介

Toast是Android中用來顯示顯示資訊的一種機制,和Dialog不一樣的是,Toast是沒有焦點的,而且Toast顯示的時間有限,過一定的時間就會自動消失。

Toast 定位

Appium 1.6.3開始支援識別Toast內容,主要是基於UiAutomator2,因此需要在Capablity設定引數

啟動引數設定

desired_caps['automationName']='uiautomator2'

環境

  • Appium-Python-Client: 2.1.2
  • selenium: 4.1.0
  • Appium:v1.20.2

測試應用

  • 網易雲課堂

測試裝置

  • 夜神模擬器 Android 7.1.2

測試場景

  • 進入登入介面輸入使用者名稱和錯誤的密碼,獲取Toast內容

程式碼實現

# _*_ coding:utf-8 _*_

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

desired_caps = {
    "platformName": "Android",
    "platformVersion": "7.1.2",
    "udid": "127.0.0.1:62001",
    "appPackage": "com.netease.edu.study",
    "appActivity": "com.netease.edu.study.activity.ActivityWelcome",
    "noReset": True,
    'automationName': 'uiautomator2'
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
driver.implicitly_wait(30)

# 點選我的選單
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tab_account").click()

# 點選登入註冊按鈕
driver.find_element(AppiumBy.XPATH, "//*[@text='登入/註冊']").click()

# 點選手機號碼登入
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/login_phone_login").click()

# 輸入手機號碼
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tv_phone_num").send_keys("132****475")

# 輸入錯誤密碼
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tv_phone_pwd").send_keys("wy12345")

# 點選登入按鈕
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/button").click()

# 獲取toast提示
toast_text = driver.find_element(AppiumBy.XPATH, "//*[@class="android.widget.Toast"]").text
print(toast_text)

執行結果:

說明

toast 獲取主要使用一個通用的class屬性獲取,通過xpath的方式://*[@class="android.widget.Toast"]

toast資訊存在是否存在判斷封裝

程式碼

def is_toast_exist(driver,text,timeout=20,poll_frequency=0.5):
    '''is toast exist, return True or False
    :Agrs:
     - driver - 傳driver
     - text   - 頁面上看到的文字內容
     - timeout - 最大超時時間,預設20s
     - poll_frequency  - 間隔查詢時間,預設0.5s查詢一次
    :Usage:
     is_toast_exist(driver, "看到的內容")
    '''
    try:
        toast_loc = ("xpath", ".//*[contains(@text,'%s')]"%text)
        WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
        return True
    except:
        return False

toast資訊內容獲取

程式碼

def is_toast_exist(driver,timeout=20,poll_frequency=0.5):
    '''is toast exist, return toast_text or None
    :Agrs:
     - driver - 傳driver
     - timeout - 最大超時時間,預設20s
     - poll_frequency  - 間隔查詢時間,預設0.5s查詢一次
    :Usage:
     is_toast_exist(driver)
    '''
    try:
        toast_loc = ("xpath", "//*[@class="android.widget.Toast"]")
        WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
        toast_text = driver.find_element(AppiumBy.XPATH, "//*[@class="android.widget.Toast"]").text
        return toast_text
    except:
        return None

到此這篇關於Appium自動化測試中獲取Toast資訊操作的文章就介紹到這了,更多相關Appium 獲取Toast內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com