关键词: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 webdriver
import traceback
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from 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 False
print(getResult(driver,’登录成功’))
至此,结束了,也不是很难,希望对大家有帮助 o(∩_∩)o
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194284.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有