Appium基础 — 获取toast信息

news2024/12/23 19:20:38

1、toast介绍

Android中的toast是一种简易的消息提示框,toast提示框不能被用户点击,会根据所设置的显示时间自动消失。

toas要appium1.6.3以上版本才支持,appium1.4的版本就别浪费时间了。

再来看下toast长什么样,如下图:

像这种弹出来的消息"再按一次退出百度App",这种消息提示框就是toast了。

2、toast定位

toast定位需要添加两步操作:

  • 添加启动参数

想要定位toast元素,Desired capabilities对象中要添加一个启动参数,如下:

"automationName": "Uiautomator2"

这样才能定位到toast

  • 除了使用Appium-Python-Client,

也就是导入from appium import webdriver

还需要用到selenium中的类,导入:

from selenium.webdriver.support.wait import WebDriverWaitfrom

selenium.webdriver.support import expected_conditions as EC

3、示例

"""
1.学习目标
    掌握toast操作方法
        目的,获取toast中文本内容
        作用,获取toast文本,有时候用在测试用例的断言中

2.操作步骤
    2.1 找到触发toast出现的元素,并操作
    2.2 获取toast中文本内容
        借助selenium中显式等待,是WebDriverWait类
        WebDriverWait(driver,最大等待时间,轮寻时间).(EC.presence_of_element_located(locator))
    2.3 toast元索定位方法 xpath定位方法
        driver.find element-by-xpath(//Lcontains(etext,'再按一次')1")
    2.4 打印ltoast中文本的值
        元素.text

    2.5 注意事项
        (1)需要在启动参数中添加一个参数(Desired capabilities对象)
            'automationName': 'Uiautomator2'

        (2)appium server版本1.6.3以上版本才支持。

3.需求
    在文件管理器中实现toast获取
        打开文件管理器app,点击返回,获取toast的值
"""# 1.导入appium和TouchActionimport time
from appium import webdriver
# 添加WebDriverWait 类from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 2.创建Desired capabilities对象,添加启动参数
desired_caps ={"platformName":"Android",# 系统名称"platformVersion":"7.1.2",# 系统版本"deviceName":"127.0.0.1:21503",# 设备名称"appPackage":"com.cyanogenmod.filemanager",# APP包名"appActivity":".activities.NavigationActivity",# APP启动名"automationName":"Uiautomator2"# 获取toast使用}# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(6)# 4.操作APP,获取toast信息#   打开文件管理器app,点击返回,获取toast的值# 4.1 直接进入到文件管理器app,点击两下返回键,触发toast出现
driver.back()# 4.2 定位(捕获)toast元素# 定位器
locator =("xpath","//*[contains(@text,'再次点击')]")# 定位
toast = WebDriverWait(driver,10,0.01).until(EC.presence_of_element_located(locator))# 4.3 输出toast信息print(toast.text)# 5.关闭APP
time.sleep(3)
driver.quit()

4、封装toast判断

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

# 1.导入appium和所需要的包from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

# 2.创建Desired capabilities对象,添加启动参数
desried_caps ={"platformName":"Android","deviceName":"9665cc4e","platformVersion":"7.1.1","appPackage":"com.baidu.yuedu","appActivity":"com.baidu.yuedu.splash.SplashActivity","automationName":"uiautomator2","noReset":True}defis_toast_exist(driver, text, timeout=30, poll_frequency=0.5):"""
    is toast exist, return True or False

    :param driver: 传入driver
    :param text: 页面上看到的文本内容
    :param timeout: 大超时时间,默认30s
    :param poll_frequency: 间隔查询时间,默认0.5s查询一次
    :return: return True or False

    Usage:
        is_toast_exist(driver, "看到的内容")
    """try:
        message_loc =("xpath","//*[contains(@text,'%s')]"% text)
        WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(message_loc))returnTrueexcept:returnFalseif __name__ =="__main__":
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desried_caps)print("打开百度阅读应用")# 等主页面activity出现# driver.wait_activity(".base.ui.MainActivity", 10)
    time.sleep(15)# 点击返回
    driver.back()print("点击返回成功")# 判断是否存在toast'再按一次退出'
    value = is_toast_exist(driver,"再按一次退出")print("是否存在toast:", value)# 5.关闭APP
    time.sleep(2)
    driver.quit()

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速幂的几种实现方式

目录快速幂算法快速幂原理代码实现常规计算次幂的方法快速幂(一般)递归求快速幂位运算求快速幂快速幂算法 快速幂 快速幂还是很常用的,例如codeforce上的这道题目: 快速幂就是快速计算底数的n次幂。其时间复杂度为O(log₂N)O(log_₂N)O(log₂​N),与朴素的O(N)相比效率有了极…

SSM配置(备忘)

SSMSSM需要配置的文件配置applicationContext.xml配置database.properties配置mappers/ExamDao.xml在java目录下创建controller、dao、pojo、service目录控制类接口类(dao)实体类(pojo)服务层serviceservice接口类服务层实现类SSM SSM包含框架 spring s…

Linux(centos7)基本操作---用户权限

用户权限基本权限(UGO)设置权限设置属主,属组基本权限(ACL)特殊权限基本权限(UGO) 设置权限 权限的对象分为个人(u),组(g)&#xff…

无货源模式,跨境电商时代的风向标

众所周知,说到电商,我们首先就会想到淘宝、天猫、京东等平台,这些平台近年来发展迅猛,红海一片,可以说已经趋向于饱和状态了。由于国内电商平台严重的同质化竞争,越来越多的卖家开始转战跨境电商。为什么加…

Canary保护机制及绕过

Canary基本介绍 在基本的栈溢出中,我们可以通过没有限制输入长度或限制不严格的函数等向栈中写入我们构造的数据,可写入的数据包括但不限于: 一段可执行的代码(关闭NX防护的前提下) 一段特意构造的返回地址等 … …

基于java SSM校园兼职平台系统设计和实现

基于java SSM校园兼职平台系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …

CI/CD | 大型企业与开发团队如何进行持续集成与持续发布

Jenkins是当今最流行的持续集成工具之一, 企业选择Jenkins,可以从它的灵活性和自动化能力中获益。但除此之外的其他需求呢?企业规模在不断增大,他们如何在不增加管理负担的情况下,让CI扩展到整个组织,并满足…

rabbit是否支持批量发送?

最近和rabbit一直在打交道, 也是有个问题 Rabbit是否支持批量发送消息 该问题笔者翻阅官方文档与三方博客也没有找到答案,后也是自己去翻阅源码后才大概找到一个不敢确定的答案: BatchingRabbitTemplate 批量rabbit模板 该模板在RabbitTemplate模板的基础上进行了…

springboot配置(备忘)

springboot配置新建项目配置application.properties成功Tips需要配置的东西设置SpringbootstuApplication配置欢迎界面在java目录下创建controller、dao、pojo、service目录(与ssm配置大致相同,注释不同)控制类接口类(dao)实体类(…

使用SysBench压测mysql8.x版本

yum install gcc gcc-c autoconf automake make libtool mysql-devel git mysql git clone https://github.com/akopytov/sysbench.git ##从Git中下载Sysbench cd sysbench ##打开sysbench目录 git checkout 1.0.18 ##切换到sysbench 1.0.18版本 ./autogen.sh ##运行autogen.sh…

读书笔记——上瘾:让用户养成使用习惯的四大产品逻辑

总结 书中核心逻辑就是下面这张图,上瘾的过程由四步组成: 下面以我自己为案例,从四个维度分析:魔兽世界、写博客,这两件事情。 1 触发、行动 行动的目标是获取酬劳。书中提到《福格行为模型》 福格行为模型&…

Windows下gitee的注册和代码提交(图文并茂)

前言 对于我们的程序源来说,我们写的代码保存下来是很有必要的,是为了我们以后方便找到我们的代码,让我们的代码不被丢失。 我们上一篇文章,将了Linux系统下我们的三板斧的指令(点开这个就可以看在Linux下的操作),这时…

法律常识(八)社会保险法全文(附解释)

目录 参考 第一章 总  则 第二章 基本养老保险 第三章 基本医疗保险 第五章 失 业 保 险 第六章 生 育 保 险 第七章 社会保险费征缴 第八章 社会保险基金 第九章 社会保险经办 第十章 社会保险监督 第十一章 法 律 责 任 第十二章 附  则…

Collect-MemoryDump:一款针对Windows的数字取证与事件应急响应工具

关于Collect-MemoryDump Collect- MemoryDump是一款针对Windows的数字取证与事件应急响应工具,该工具能够自动创建Windows内存快照以供广大研究人员或应急响应安全人员进行后续的分析和处理。 项目提供的Collect- MemoryDump.ps1是一个PowerShell脚本文件&#xf…

51单片机学习笔记-7LED点阵屏

7 点阵屏 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 7.1 LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列…

前端灰度发布(定义 优点 原理 方式)

1. 什么是灰度发布? 灰度发布,又被称之为金丝雀发布,是指某次新发布功能特性和旧功能特性之间能够以平滑过渡的方式呈现给用户,就像金丝雀的羽毛一样多种颜色平滑渐变。 举个例子,某个已上线处于运行中的系统需要一次…

播放视频报403 forbidden的原因及解决方案

一、原因 1、原因:我们知道,在页面引入图片、JS 等资源,或者从一个页面跳到另一个页面,都会产生新的 HTTP 请求,浏览器一般都会给这些请求头加上表示来源的 Referrer 字段。图片服务器通过检测 Referrer 是否来自规定…

Cisco RV340命令执行漏洞(CVE-2022-20707)及关联历史漏洞分析

一、引言 本篇文章主要是对Cisco RV340命令执行漏洞(CVE-2022-20707)进行的研究分析,尽管利用此漏洞需要身份验证,但可以通过CVE-2022-20705绕过现有的身份验证机制实现无条件的命令执行。历史相关的漏洞还包括:CVE-2020-3451、CVE-2021-147…

客户案例 | 低代码上的西门子,工欲善其事必先利其器

关键发现 用户痛点:项目管理过程涉及的系统繁多,系统间状态不透明,数据查询困难;人工流程虽属个别,但易拉低总体效率并有可能出错;数据报告自动化程度低。 解决方案:利用西门子低代码开发平台开…

玩转电脑|WIN10如何添加打印机扫描到电脑

win10和win7 添加打印机扫描到电脑操作不一样,换了win10电脑后还是按照win7的方法进行添加,会发现win10系统添加京瓷6525FMP打印机的扫描地址时会出现链接错误,无法添加。是因为win10需要设置SMB权限之后,即可添加地址簿。一、配置…