Appium_7_Toats提示

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

 

 

 

Toast简介

Android中的Toast是一种简易的消息提示框。 当视图显示给用户,在应用程序中显示为浮动。和Dialog不一样的是,它永远不会获得焦点,无法被点击。

Toast类的思想就是尽可能不引人注意,同时还向用户显示信息,希望他们看到。而且Toast显示的时间有限,一般3秒左右就消失了。因此使用传统的元素定位工具,我们是无法定位到Toast元素的(传说中低调奢华有内涵)。

 

Appium Toast内容获取

Add ability to verify TOAST messages (these can't be interacted with, only text retrieval allowed)

1.Appium 1.6.3开始支持识别Toast内容,主要是基于UiAutomator2,因此需要在Capablity配置如下参数:

'automationName':'uiautomator2'

2.安装appium-uiautomator2-driver: 安装命令如下:

cnpm install appium-uiautomator2-driver

   安装成功后可以在 C:\Users\Administrator\node_modules看到对应的文件:

  •  _appium-uiautomator2-driver@1.12.0@appium-uiautomator2-driver
  •  _appium-uiautomator2-server@1.10.0@appium-uiautomator2-server

 

测试环境

  • jdk版本:"1.8.0_05"
  • appium版本:1.7.2 (不能低于1.6.3)
  • selenium:3.11.0
  • 测试设备:Android 5.1.1 (不能低于5.0版本)
  • Python:3.6.3
  • 测试App:考研帮Android app V3.1.0

测试场景

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

  • “用户名或密码错误,你还可以尝试4次”
  • “验证失败次数过多,请15分钟后再试”

代码实现

from  appium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
import time
desired_caps={'platformName':'Android',
              'platforVersion':'5.1.1',
              'automationName':'uiautomator2',
              'deviceName':'127.0.0.1:62025',
              'app':r'F:\APPium\kaoyan3.1.0.apk',
              'appPackage':'com.tal.kaoyan',
              'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity',
              'noReset':'True'}

driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(5)
try:
    driver.find_element_by_id("android:id/button2").click()
except NoSuchElementException:
    print(1)
try:
    driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click()
except NoSuchElementException:
    print(2)
driver.find_element_by_id('com.tal.kaoyan:id/login_email_edittext').clear()
driver.find_element_by_id('com.tal.kaoyan:id/login_email_edittext').send_keys('zxss018')

driver.find_element_by_id('com.tal.kaoyan:id/login_password_edittext').send_keys('zxw2018')
driver.find_element_by_id('com.tal.kaoyan:id/login_login_btn').click()


error_message="用户名或密码错误,你还可以尝试4次"
limit_message="验证失败次数过多,请15分钟后再试"

message='//*[@text=\'{}\']'.format(error_message)
# message='//*[@text=\'{}\']'.format(limit_message)

toast_element=WebDriverWait(driver,5).until(lambda x:x.find_element_by_xpath(message))
print(toast_element.text)

 

 

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

参考资料

https://testerhome.com/topics/6685

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值