开发者

Appium自动化测试中获取Toast信息操作

开发者 https://www.devze.com 2022-12-10 14:10 出处:网络 作者: 测试之路king
目录Toast简介Toast 定位启动参数配置toast信息存在是否存在判断封装toast信息内容获取Toast简介
目录
  • Toast简介
  • Toast 定位
  • 启动参数配置
  • toast信息存在是否存在判断封装
  • toast信息内容获取

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/h编程客栈ub", 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("wy12345http://www.cppcns.com")

# 点击登录按钮
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
pwww.cppcns.comrint(toast_text)

执行结果:

Appium自动化测试中获取Toast信息操作

说明

toast 获取主要使用一个通用的class属性获取,通过xpath的方式://*[@class="android.widget.Toast"]gWlBYe

toast信息存在是否存在判断封装

代码

def is_toast_exist(drivergWlBYe,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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号