注意

toast要appium1.6.3以上版本才支持,Android 5.0以上(需使用夜神多开模拟器),jdk1.8且配置了环境变量。

toast定位

1.先看下toast长什么样,如下图,像这种弹出来的消息"再按一次退出",这种就是toast了。

2.想定位toast元素,这里一定要注意automationName的参数必须是Uiautomator2才能定位到。

'automationName': 'Uiautomator2'

# coding:utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleepdesired_caps = {'platformName': 'Android','deviceName': '127.0.0.1:62001','platformVersion': '4.4.2','appPackage': 'com.baidu.yuedu','appActivity': 'com.baidu.yuedu.splash.SplashActivity','noReset': 'true','automationName': 'Uiautomator2'}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)# 等主页面activity出现
driver.wait_activity(".base.ui.MainActivity", 10)driver.back()   # 点返回# 定位toast元素
toast_loc = ("xpath", ".//*[contains(@text,'再按一次退出')]")
t = WebDriverWait(driver, 10, 0.1).until(EC.presence_of_element_located(toast_loc))   #注意等待必须是元素存在,元素可见会报错
print t

3.打印出来的结果,出现如下信息,说明定位到toast了

<appium.webdriver.webelement.WebElement (session="02813cce-9aaf-4754-a532-07ef7aebeb88", element="339f72c4-d2e0-4d98-8db0-69be741a3d1b")>

封装toast判断

1.单独写一个函数来封装判断是否存在toast消息,存在返回True,不存在返回False

def is_toast_exist(driver,text,timeout=30,poll_frequency=0.5):'''is toast exist, return True or False:Agrs:- driver - 传driver- text   - 页面上看到的文本内容- timeout - 最大超时时间,默认30s- 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 Trueexcept:return False

参考代码

# coding:utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
desired_caps = {'platformName': 'Android','deviceName': '127.0.0.1:62001','platformVersion': '4.4.2','appPackage': 'com.baidu.yuedu','appActivity': 'com.baidu.yuedu.splash.SplashActivity','noReset': 'true','automationName': 'Uiautomator2'}def is_toast_exist(driver,text,timeout=30,poll_frequency=0.5):'''is toast exist, return True or False:Agrs:- driver - 传driver- text   - 页面上看到的文本内容- timeout - 最大超时时间,默认30s- 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 Trueexcept:return Falseif __name__ == "__main__":driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)# 等主页面activity出现driver.wait_activity(".base.ui.MainActivity", 10)driver.back()   # 点返回# 判断是否存在toast-'再按一次退出'print is_toast_exist(driver, "再按一次退出")

appium之toast处理相关推荐

  1. Python+Appium自动化测试之toast定位

    目录 一. 前言 二. 环境 三. toast定位准备与定位方法 1. 准备 2. 定位方法 四. 示例代码 一. 前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位 ...

  2. 使用appium工具对漫画发表评论

    文章目录 Appium介绍 思路 使用adb install命令安装app客户端软件 通过appium-Desktop查取页面元素的id 设计代码 调试日志 参考资料 Appium介绍 Appium是 ...

  3. docker always_Ubuntu+Docker+STF环境搭建

    Ubuntu 提前先安装配置好 Ubuntu server 14.04.5 参考资料:Ubuntu 16.04 Server 版安装过程图文详解 Dcoker安装 Ubuntu 14.04/16.04 ...

  4. linux运维需要哪些网络知识,Linux运维学习笔记-网络技术知识体系总结

    jTemplates部分语法介绍 1.{#if} {#if |COND|}..{#elseif |COND|}..{#else}..{#/if} Examples: {#if 2*8==16} goo ...

  5. 那些年使用appium-Uiautomator2遇到的问题解决方法!

    那些年使用appium-Uiautomator2遇到的问题解决方法! 1.由于需要用到appium获取toast信息,所以必须设置desirve["automationName"] ...

  6. python uiautomator2 toast_Android自动化测试 - 获取toast提示(Appium+Python+UiAutomator2)

    toast提示是app中最多见的,UI自动化中天然也要对其进行测试,故测试完成以此贴记录下python 一 环境配置 若是环境配置OK直接跳到第6步安装uiautomator2git 1.下载Appi ...

  7. android自动化获取toast,成都汇智动力小强哥系列-Appium中Android自动化怎么获取浮层的toast...

    原标题:成都汇智动力小强哥系列-Appium中Android自动化怎么获取浮层的toast 小强哥说,虽然比你优秀的人还比你努力,你的努力不见得能超过别人,但是你至少要比昨天的自己更优秀啊.所以每天都 ...

  8. robotframework + appium 获取android toast

    android toast 获取主要方式是在出现toast的时候查找元素:xpath=//*[contains(@text,'记同步')]  ,该xpath 表示为toast信息含有  "记 ...

  9. App混合应用Appium自动化测试框架技术难点

    前言 难点?Appium工具的坑太多了,一上百度搜索就是一箩筐各种解决方案,且不同人不同环境,实则静下心来分析,无非就是环境问题和使用者对框架的思考问题!为什么这么说呢?例如:app混合h5的自动化, ...

  10. appium python框架结构,GitHub - wyybingo/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...

    0910 UPDATE 新增控件集参数化,相同测试步骤的Android/iOS可共用一份测试用例 不同测试步骤的用例还需要单独写 0904 UPDATE 优化Android log及crsahinfo ...

最新文章

  1. Chrome 打印PDF技巧
  2. java byte array_Java IO: ByteArray和Filter
  3. python黑客代码_[翻译]Python开发中的密码散列(Hashing)
  4. Python面试题:字节到大整数的打包与解包
  5. OC中使用 static 、 extern、 const使用
  6. Apache Camel 2.9发布–十大变化
  7. win下php的memcached的安装与使用
  8. 树莓派3B的WiFi中文乱码及搜索不到附近的WiFi_解决方案:
  9. python np数组中括号里面‘:n‘与‘n:‘什么意思
  10. 交换机端口镜像配置大全【汇集22个各种品牌交换机】
  11. linux文件系统 ext3,Linux环境中使用Ext3文件系统
  12. (八)office2016-excel绘制斜线表头 双斜线和三斜线
  13. Clion 报错 Cannot save file ... [Failed to reload]
  14. web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript
  15. 有钱人抢豪宅,普通人不敢消费:社会在割裂,富人更富,穷人更穷
  16. TM1637驱动4位时钟数码管的Arduino 程序
  17. V370 Intel WiFi Link 1000 BGN驱动如何正确安装
  18. 深度学习中EMA的使用场景
  19. 西门子S7-200 SMART(6ES7 288-1ST40-0AA0)相关与晨控智能CK-FR08-E00关于modbus tcp 通信配置指南
  20. 减少Cache失效开销例题1(多级Cache)

热门文章

  1. eregi php 5.2,PHP5.3x不再支持ereg和eregi
  2. 使用opengl和c++实现迷宫地图的路径搜索和显示(基于DFS)
  3. 英语 —— 辅音浊化
  4. 致远免费动态域名解析服务软件[永久免费]
  5. Exchange Server 2016 CU22升级更新
  6. 黑苹果音频卡顿_DXOMARK公布无线音箱音质基准:苹果华为Sonos上榜
  7. raw格式转换jpg软件 V5.2
  8. 【vbs消息轰炸代码】
  9. 【书影观后感 一】大秦帝国的罗曼蒂克消亡史
  10. videoview实现视频引导页及从assets文件中读取文件到本地SD卡