Appium获取toast方法封装

news/2025/2/6 8:52:25/

一、前置说明

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.ppmy.cn/news/1261457.html

相关文章

基于FPGA的温度控制系统设计(论文+源码)

1.系统设计 本次基于FPGA的智能温度控制系统,以FPGA为控制核心,采用自顶向下的设计方法,按照模块化设计的思路分别实现各个模块,再加以整合实现整个系统,从而达到了温度控制的目的。系统以水箱为被控对象,…

Java网络编程 *TCP与UDP协议*

网络编程 什么是计算机网络? 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统 简单来说就是把不同地区的计算机通过设备连接起来,实现不同地区之前的数据传输 网络编程是干什么的? 网络…

GO设计模式——1、简单工厂模式(创建型)

目录 简单工厂模式(Simple Factory Pattern) 简单工厂模式的核心角色 优缺点 代码实现 简单工厂模式(Simple Factory Pattern) 简单工厂模式又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中,可以…

C语言——常用库函数

C语言——常用库函数 memcmp int my_memcmp(char* str1,char* str2,int num) {while(num--){if(*str1>*str2){return 1;}else if(*str1<*str2){return -1;}else{str1;str2;}}return 0; }memcpy void* my_memcpy(void *str1,void *str2,int size) {int *p1str1;int *p2…

分布式训练类的定义以及创建分布式模型

一 、分布式训练类的定义 from ..modules import Module from typing import Any, Optional from .common_types import _devices_t, _device_tclass DistributedDataParallel(Module):process_group: Any ...dim: int ...module: Module ...device_ids: _devices_t ...ou…

第六章:实验案例二:SQL Server数据库的备份和还原实验环境

需求描述 每周日晚上22:00对bdqn数据库进行完整备份;每天12:00和18:00对该数据库进行事务曰志备份。 推荐步骤 1&#xff0c;创建数据库维护计划。每周日晚上22:CO进行完整备份&#xff0c;每天12:C0和18:00进行事务日志备份。 2&#xff0c;测试备份数据是否可用。 {1&…

K8S 删除命令空间时 一直卡住怎么办?

当使用完一个命名空间后&#xff0c;想删除了又删除不掉&#xff0c;这个时候查看命名空间的状态一直是Terminating。使用强制删除&#xff0c;也是还是不行。&#xff08;找了好多办法都不行&#xff09; [rootk8s-master kubernetes-yaml]# kubectl delete ns mem-example Er…

avaScript字符串面试题

JavaScript字符串面试题 创建一个包含一段文本的字符串&#xff0c;并打印输出字符串的内容。 const str "Hello, World!"; console.log(str);如何获取字符串的长度&#xff08;即字符的个数&#xff09;&#xff1f; const str "Hello, World!"; const …