什么是toast?

如下图,“再按一次退出程序”,这就是toast

如何定位toast元素?

Appium1.6.3开始支持识别Toast内容,主要基于UiAutomator2

想定位toast元素,这里一定注意automation的参数必须是Uiautomator2才能定位到

‘automationName':'Uiautomator2'

安装appium-uiautomator2-driver

安装命令cnpm install appium-uiautomator2-driver

安装完成之后,进入appium的安装目录下C:\Roaming\npm\node_modules\appium\node_modules查看

且server目录下,apks文件夹中有如下apk

安装selenium模块

pip install selenium

安装完成后检测是否安装成功

 示例

场景:输入密码错误时,toast提示"用户名或密码不对"

 #coding=utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
desired_caps = {
#android的apk
'platformName': 'Android',
#手机设备名称
'deviceName': '192.168.175.101:5555',
#android系统的版本号
'platformVersion': '5.1',
'automationName':'Uiautomator2', 'app':r'C:\Users\bzART\Desktop\app-artmall-release.apk',
# apk包名
'appPackage': 'com.baozhenart.artmall',
# apk的launcherActivity
'appActivity': 'com.baozhenart.artmall.SplashActivity',
#默认neReset为false,不要在会话前重置应用状态,每次启动都跟第一次启动一样,变为true则不一样
'noReset':True }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.implicitly_wait(10) #点击个人中心
driver.find_element_by_id("com.baozhenart.artmall:id/ll_user").click()
time.sleep(2)
#点击登录注册
driver.find_element_by_id("com.baozhenart.artmall:id/iv_user_head").click() time.sleep(2)
#点击密码验证登录
driver.find_element_by_id("com.baozhenart.artmall:id/login_title").click()
time.sleep(2)
#输入用户名
driver.find_element_by_id("com.baozhenart.artmall:id/et_username").clear()
driver.find_element_by_id("com.baozhenart.artmall:id/et_username").send_keys("bd2")
# 输入密码
driver.find_element_by_id("com.baozhenart.artmall:id/et_password").send_keys("")
#点击确定
driver.find_element_by_id("com.baozhenart.artmall:id/bt_login").click() error_message="用户名或密码不对"
message='//*[@text=\'{}\']'.format(error_message)
toast_element = WebDriverWait(driver,5).until(lambda x:x.find_element_by_xpath(message))
print(toast_element.text)

toast定位踩过的坑

增加了'automationName':'Uiautomator2'这个,运行脚本就报错,注释掉就正常,报错如截图所示

此时是由于版本兼容性问题,试着把appium升级到最新版本试试。我用的是1.8.1正常,之前是1.7.2就报上面的错误

python3+Appium自动化04-Toast元素识别的更多相关文章

  1. appium自动化测试之UIautomatorviewer元素定位

    appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...

  2. Appium之Toast元素识别

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

  3. APP自动化 -- 获取toast元素的文本内容

    一.toast元素 1.表现形式:toast元素就是下图中  “操作成功” 那个一闪而过的标签. 2.特殊点:因为一闪而过,时间太短,用UIAutomatorView截屏截不到. 二.获取方法 1.用 ...

  4. python3+Appium自动化12-H5元素定位环境搭建

    前言 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素 ...

  5. python3+Appium自动化13-H5元素定位实践案例

    测试场景 启动钉钉app进入工作H5页面,点击考勤签到 查看webview上元素 1.电脑上打开chrome浏览器输入:chrome://inspect/#devices 2.Discover USB ...

  6. python3+Appium自动化03-Appium元素检测

    需要导入方法NoSuchElementException from appium import webdriver from selenium.common.exceptions import NoS ...

  7. python3+Appium自动化02-Capability配置

    基本参数 参数 描述 实例 automationName 自动化测试引擎 Appium或 Selendroid platformName 手机操作系统 iOS, Android, 或 FirefoxO ...

  8. python+Appium自动化:H5元素定位

    问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...

  9. python+Appium自动化:toast定位

    Toast简介 Toast是一种简易的消息提示框. 当视图显示给用户,在应用程序中显示为浮动.和Dialog不一样的是,它永远不会获得焦点,无法被点击. 用户将可能是在中间键入别的东西.Toast类的 ...

随机推荐

  1. EXPLAIN 命令

    MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提 ...

  2. MySQL数据库服务器参数优化mycnf,16G内存8核CPU,

    业务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器. qps: 200个左右 tps: 1个左右 一分钟50几个 sort_buffer_size = 32M 大了 ...

  3. Velocity下面的Velocimacros设置

    Velocimacros #macro script element允许模板设计者定义一段可重用的VTL template.Velocimacros广泛用于简单和复杂的行列.Velocimacros的 ...

  4. cmake opencv,dlib 编译静态库 1

    无论windows,linux 所有的库 ,dlib,opencv 通过cmake-gui 设置好静态库, 动态库,和其他各个选项 Tips: cmake 优先级用cmake-gui,因为命令太多,容 ...

  5. stm32之内部功能

    本文将提到以下内容: 位带操作 中断 printf重定向 随机数发生器RNG AD/DA DMA 高性能计算能力 加密 ART加速 一.位带操作 在学习51单片机的时候就使用过位操作,通过关键字sbi ...

  6. <正则吃饺子> :关于Java的native方法(转)

    感谢作者的分享,原文地址:http://blog.csdn.net/wike163/article/details/6635321 一. 什么是Native Method   简单地讲,一个Nativ ...

  7. Python 图像识别入门篇

    一.安装Python依赖 pip install pytesseract pyocr pillow Image pip安装:https://www.cnblogs.com/Javame/p/10918 ...

  8. C++中的构造函数小结

    对象的初始化 对象时类的实例,类是不占用空间的,对象是占用空间的. 因为类是抽象的,不占用空间的,所以我们不能再定义类的时候对对象进行初始化操作的. 但是,我们可以定义一个函数,在类实例化一个对象的时 ...

  9. html span

    提示:请使用 <span> 来组合行内元素,以便通过样式来格式化它们.注释:span 没有固定的格式表现.当对它应用样式时,它才会产生视觉上的变化.以上是w3上的标准解释,另外span是个 ...

  10. 【转-mysql索引失效的几种情形】

    索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 注意:要想使用or,又想让索引生效,只能将or条件 ...