关键词:Android,Appium,Python,Toast

1、什么是toast?

toast是一个浮动的显示块,在Android中主要用于提示信息,超时后退出,常用于提示一些不是那么重要的信息;如果是重要的信息,会使用notification。toast比较难定位,一来因为它时间很短,一般3秒左右;二来toast元素一般不写在XML中,代码中直接去调用。

Toast.makeText(getApplicationContext(),"显示内容",Toast.LENGTH_SHORT).show();

在我们使用自动化框架的时候,经常需要通过toast进行断言。

下图中点击登录后,弹出的“登录成功”就是个 toast

image.png

toast2.png

2、环境是什么?

环境本身比较复杂,网上很多资料说appium要1.6.3以上,Android 5.0以上等各种要求。
我在调试代码的过程中,appium 报错:io.appium.uiautomator2.server.test does not have a signature,后来几番查阅资料竟然发现安装appium的时候要仅为当前用户,无语...O__O "…

image.png

我的环境如下:
Appium Desktop 1.13.0
Appium-Python-Client 0.46
Python 3.6.4
Android OS 5.0.2
APP 开发者头条 3.0.2

为了防止环境有问题,建议大家使用较新的环境。

3、如何获取Toast?

1)配置项需要加uiautomator2的引擎

desired_caps['automationName'] = 'uiautomator2'  # 捕获toast消息

appium启动的时候,会安装如下2个apk

image.png
Appium-Uiautomator2-Server 详细的原理,大家可以参考这篇文章:
https://www.jianshu.com/p/d8457a06c7b7

2)使用显示等待,固定频率去获取元素

ele = WebDriverWait(driver, 60, 0.1).until(EC.presence_of_element_located((By.XPATH, f"//*[@text='登录成功']")))print(ele.text)

3)最终的代码

from appium import webdriverimport  tracebackfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By--**此处代码省略,完成webdriver初始化和登录**--def getResult(driver,text):    try:        ele = WebDriverWait(driver, 60, 0.1).until(EC.presence_of_element_located((By.XPATH, f"//*[@text='{text}']")))        print(ele.text)        return True    except:        print(traceback.format_exc())  # 打印报错        return Falseprint(getResult(driver,'登录成功'))

至此,结束了,也不是很难,希望对大家有帮助 o(∩_∩)o

更多相关文章

  1. activity和service之间的相互通信方法
  2. 为什么选择Android(安卓)Studio 而不再固守 Eclipse?
  3. Android系统源代码情景分析
  4. 常用控件的使用方法(参考书籍'第一行代码')
  5. android 访问webservice问题
  6. [置顶] React Native Android(安卓)Cookie Problem
  7. Android-webview和js脚本语言交互的时候怎么获取js方法的返回值
  8. 分享Android平板电脑上开发应用程序不能全屏显示的问题解决
  9. android 编译环境

随机推荐

  1. Android LinearLayout中实现水平方向控件
  2. Android——SharedPreferences
  3. android 常用布局有哪些
  4. Android工程导入时常见的错误解决方法
  5. Android ellipsize属性(多余文字用省略号
  6. android限制文本长度
  7. android ListView 示例1 entries 指定一
  8. Android:解决ListView按下后上下滑动背景
  9. Android studio was unable to find a va
  10. Android 使用iperf测试wifi吞吐量