在平常使用App过程当中,常常会看到App界面有一些弹窗提示(以下图所示)这些提示元素出现后等待3秒左右就会自动消失,那么咱们该如何获取这些元素文字内容呢?node
Android中的Toast是一种简易的消息提示框。 当视图显示给用户,在应用程序中显示为浮动。和Dialog不同的是,它永远不会得到焦点,没法被点击。python
Toast类的思想就是尽量不引人注意,同时还向用户显示信息,但愿他们看到。并且Toast显示的时间有限,通常3秒左右就消失了。所以使用传统的元素定位工具,咱们是没法定位到Toast元素的(传说中低调奢华有内涵)。git
Add ability to verify TOAST messages (these can't be interacted with, only text retrieval allowed)github
Appium 1.6.3开始支持识别Toast内容,主要是基于UiAutomator2,所以须要在Capablity配置以下参数:web
desired_caps['automationName']='uiautomator2'npm
安装appium-uiautomator2-driver: 安装命令以下:app
cnpm install appium-uiautomator2-driverxss
安装成功后能够在 C:\Users\XXXX\node_modules看到对应的文件:工具
安装selenium模块测试
pip install selenium
安装完成后使用以下命令检测是否安装成功
#查看selenium版本
C:\Users\Shuqing>pip show selenium
Name: selenium
Version: 3.11.0
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: c:\python35\lib\site-packages
Requires:
Required-by: Appium-Python-Client
进入登陆界面输入错误的用户名或者密码,获取Toast内容:
get_toast.py
# coding=utf-8
from find_element.capability import driver
from selenium.webdriver.support.ui import WebDriverWait
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 不然会由于编解码致使文字识别失败。