Appium获取toast方法封装

一、前置说明

toast消失的很快,并且通过uiautomatorviewer也不能获取到它的定位信息,如下图:

二、操作步骤

toast的class name值为android.widget.Toast,虽然toast消失的很快,但是它终究是在Dom结构中出现过,所以我们可以使用xpath来定位toast元素:

    def get_toast(self, text=None, timeout=3, interval=0.5):# 如果同时出现多个toast,可以使用这种方式if text:return WebDriverWait(self, timeout, interval).until(EC.presence_of_element_located(('xpath', f'//*[contains(@text, "{text}")]')))return WebDriverWait(self, timeout, interval).until(EC.presence_of_element_located(('xpath', '//*[@class="android.widget.Toast"]')))

三、Demo验证

注意:appium在v1.6.3以上才支持获取toast,并且需要指定使用Uiautomator2库。

def test_get_toast():import logginglogging.basicConfig(level=logging.DEBUG)from driver.appium.driver import WebDriverappium_server_url = 'http://localhost:4723'capabilities = {"platformName": "Android","automationName": "uiautomator2",  # 注意:要指定uiautomator2"deviceName": "127.0.0.1:62001","app": "D:\\resources\\ApiDemos-debug.apk",}driver = WebDriver(command_executor=appium_server_url, capabilities=capabilities)driver.smart_find_element(by='text', value='App').click()driver.smart_find_element(by='text', value='Notification').click()driver.smart_find_element(by='text', value='NotifyWithText').click()driver.smart_find_element(by='text', value='SHOW SHORT NOTIFICATION').click()element = driver.get_toast('Short notification')assert element.text == 'Short notification'

日志输出:

============================= test session starts =============================
collecting ... collected 1 itemtest_appium.py::test_get_toast PASSED============================= 1 passed in 19.91s ==============================

欢迎技术交流:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[WMCTF2020]Make PHP Great Again require_once 特性

php源码分析 require_once 绕过不能重复包含文件的限制-安全客 - 安全资讯平台 这里是特性 我们首先来解释一下 <?php highlight_file(__FILE__); require_once flag.php; if(isset($_GET[file])) {require_once $_GET[file]; }这个是我们的源代码 PHP包含的格式是将 已…

外贸邮件开发信称呼怎么写?邮件开头称呼?

得体的开发信称呼方法技巧&#xff1f;外贸邮件称呼部分如何写&#xff1f; 邮件的开篇通常以称呼语句来建立联系&#xff0c;这个称呼在一封邮件中至关重要&#xff0c;它不仅要表现出尊重&#xff0c;还要显得亲切和专业。那么&#xff0c;如何写外贸邮件开发信称呼呢&#…

【keil备忘录】2. stm32 keil仿真时的时间测量功能

配置仿真器Trace内核时钟为单片机实际的内核时钟&#xff0c;需要勾选Enable设置&#xff0c;设置完成后Enable取消勾选也可以&#xff0c;经测试时钟频率配置仍然生效&#xff0c;此处设置为48MHZ: 时间测量时必须打开register窗口&#xff0c;否则可能不会计数 右下角有计…

WMMSE方法的使用笔记

标题很帅 原论文的描述WMMSE的简单应用 无线蜂窝通信系统的预编码设计问题中&#xff0c;经常提到用WMMSE方法设计多用户和速率最大化的预编码&#xff0c;其中最为关键的一步是将原和速率最大化问题转化为均方误差最小化问题&#xff0c;从而将问题由非凸变为关于三个新变量的…

手撕HashMap源码1

目录 简单说一下什么是哈希表 哈希冲突的常见解决办法 1.开放寻址法 1.1线性的地址检测 1.2二次检测 1.3双重散列 2.链表法 HashMap的源码讲解 常见属性 初始化对象的几个构造函数 实际的扩容分析 几个常见问题 手写一个简单的哈希表 简单说一下什么是哈希表 其实就是在…

接口测试要测试什么?

第一部分&#xff1a; 首先&#xff0c;在做接口测试的过程中&#xff0c;经常有后端开发会问&#xff1a; 后端接口都测试什么&#xff1f;怎么测的&#xff1f;后端接口测试一遍 &#xff0c;前端也测试一遍&#xff0c;是不是重复测试了&#xff1f; 于是&#xff0c;为了…

爱智EdgerOS之深入解析AI图像引擎如何实现AI视觉开发

一、前言 AI 视觉是为了让计算机利用摄像机来替代人眼对目标进行识别&#xff0c;跟踪并进一步完成一些更加复杂的图像处理。这一领域的学术研究已经存在了很长时间&#xff0c;但直到 20 世纪 70 年代后期&#xff0c;当计算机的性能提高到足以处理图片这样大规模的数据时&am…

实验3.5 路由器的单臂路由配置

实验3.5 路由器的单臂路由配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.SWA的基本配置2.RA的基本配置3.在RA上查看接口状态 六、任务验收七、任务小结 一、任务描述 某公司对部门划分了需VLAN之后&#xff0c;发现两个部门之间无法通信&#xff0c;但…

Kubernetes集群安装高可用postgresql

Kubernetes集群安装高可用postgresql Bitnami 提供的 postgresql-ha 解决方案是一个预配置的、高可用的 PostgreSQL 集群配置&#xff0c;通常部署在 Kubernetes 环境中。它使用了一些关键技术和组件来实现数据库的高可用性。&#xff0c;Bitnami postgresql-ha 主要采用以下构…

【PCB设计】嘉立创EDA器件3D模型导入AD的方法

嘉立创EDA器件3D模型导入AD的方法 一、嘉立创EDA导出3D模型二、CAD编辑3D模型三、AD中加载3D模型 一、嘉立创EDA导出3D模型 在嘉立创EDA中找到对应的元器件&#xff0c;并生成PCB&#xff0c;选择导出3D文件 导出元件step模型 二、CAD编辑3D模型 用FreeCAD打开模型 删除…

pytorch的二次索引矩阵无法赋值问题

最近在研究中发现torch一个问题&#xff0c;即torch的二次索引的矩阵无法赋值。 具体来说&#xff0c;给定相同的初始常数矩阵a和iou_target矩阵, 以及另一iou矩阵&#xff0c;直接赋值是没问题的。 然而&#xff0c;当对iou_target矩阵进行二次索引时&#xff0c;即idx矩阵和…

【小白专用】MySQL创建数据库和创建数据表

1.在Windows开始搜索输入Mysql,并选择第一个打开。 2.输入安装时的密码 3.说明安装成功。 二、创建数据库 1. 连接 MySQL 输入 mysql -u root -p 命令&#xff0c;回车&#xff0c;然后输入 MySQL 的密码(不要忘记了密码)&#xff0c;再回车&#xff0c;就连接上 MySQL 了。 …