移动app测试

App自动化之获取APP Toast(消息提示框)的信息

2018-11-10  本文已影响145人  test小星星

在我们日常使用App过程中,经常会看到App界面有一些弹窗提示(如下图所示)这样的提示框称之为Toast提示框,这些提示元素出现后等待3秒左右就会自动消失,那么我们该如何获取这些元素文字内容呢?


Toast提示框

Toast简介

实例

测试环境

Appium Toast内容获取

Appium 1.6.3开始支持识别Toast内容,主要是基于UiAutomator2,因此需要在Capablity配置如下参数:
desired_caps['automationName']='uiautomator2'
安装appium-uiautomator2-driver: 安装命令如下:
cnpm install appium-uiautomator2-driver
安装成功后可以在 C:\Users\XXXX\node_modules看到对应的文件:

测试场景

进入登录界面输入错误的用户名或者密码,获取Toast内容:

代码实现

# coding=utf-8
from appium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait

# 真机
desired_caps = {
  "platformName": "Android",
  "platformVersion": "7.0",
  "deviceName": "Honor NOTE 8",
  "udid": "8DF6R16728706566",
  "appPackage": "com.jinding.shuqian",
  "appActivity": "com.jinding.shuqian.WelcomeActivity",
  "noReset": 'true',
  'automationName': 'uiautomator2'
}
# 连接
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
sleep(2)

print('元素检测')
# 用于检测是否是第一次打开APP(第一次打开APP会有引导页)
try:
  # 定位我的
  my = driver.find_element_by_id('com.jinding.shuqian:id/rb_center')
except Exception as e:
  print('未找到元素')
else:
# 点击我的
 my.click()

# 输入用户名
driver.find_element_by_id('com.jinding.shuqian:id/et_login_username').send_keys('123')
# 输入密码
driver.find_element_by_id('com.jinding.shuqian:id/et_login_password').send_keys('aaaaaa')
# 点击登录
driver.find_element_by_id('com.jinding.shuqian:id/button_login').click()

# 用于生成xpath定位 相当于 "//*[@text='没有找到用户名或密码']"
toast_message = "没有找到用户名或密码"
message ='//*[@text=\'{}\']'.format(toast_message)

# 获取toast提示框内容
toast_element = WebDriverWait(driver,5).until(lambda x:x.find_element_by_xpath(message))
print(toast_element.text)
assert toast_element.text == "没有找到用户名或密码"

注意:Toast内容为中文时,顶部必须注释# coding=utf-8 否则会因为编解码导致文字识别失败。

上一篇下一篇

猜你喜欢

热点阅读