快速上手App自动化测试利器,Toast原理解析及操作实例

news/发布时间2024/5/16 10:28:42

简介

Toast 是一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。

Toast具有如下的特点:

  • 无法被点击,不同于 Dialog,永远不会获得焦点。
  • Toast 显示的时间有限,Toast 会根据用户设置的显示时间后自动消失
  • 是系统级别的控件,属于系统 settings

Toast 的思想:尽可能不引人注意,同时还向用户显示信息,希望用户看到。

如下图,就是一种 Toast 消息框类型:

Toast 定位

Appium 在抓取 Toast 时,使用的是 uiautomator 底层,然后将 Toast 元素放入控件树中。需要注意的是,Toast 本身并不属于常规的用户界面控件,而是一种短暂的消息提示,在这个过程中,Appium 使用的是 uiautomator2。

Toast 出现的时间一般比较短,可以通过等待或者打印页面元素的方式判断是否存在,并且通过 Xapth 或者 Accessibility ID 的定位方式找到 Toast 元素。在页面结构中,Toast 元素大致如下所示:

<!-- 在这里可以看到Toast消息提示框的class是android.widget.Toast,且一个页面一般只有一个 -->
<android.widget.Toast index="1" package="com.android.settings" class="android.widget.Toast" text="Clicked popup menu item Search" displayed="true" />
  1. 配置 driver 的初始化和关闭 driver 的步骤。
class TestToast:def setup_class(self):caps = {'platformName': 'android','appium:appPackage': 'io.appium.android.apis','appium:appActivity': 'io.appium.android.apis.view.PopupMenu1',"appium:noReset": True,"appium:shouldTerminateApp": True}self.driver = webdriver.Remote("http://127.0.0.1:4723", options=UiAutomator2Options().load_capabilities(caps))self.driver.implicitly_wait(15)def teardown_class(self):self.driver.quit()
  1. 定位 toast 消息提示框

def test_get_toast(self):# 定位到 Make a Popup! 按钮并点击self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Make a Popup!").click()# 消息框类型选择searchself.driver.find_element(AppiumBy.XPATH, "//*[@text='Search']").click()# 获取 Toast 弹框文本信息result = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text, 'Clicked popup')]").textassert result == "Clicked popup menu item Search"

总结

Toast 消息提示框是一个出现时间短并且无法被点击,一般可以用 Xpath 或者 Accessibility ID 的方式去定位。

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

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

相关文章

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记15_虚拟助手

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记15_虚拟助手1. 虚拟助手 1.1. 站在全球视角,这些公司是:亚马逊、脸书、谷歌和苹果 1.1.1. 苹果的Siri 1.1.2. 亚马逊的Alexa 1.1.3. 脸书Messenger应用上的M 1.1.4. 谷歌语音助手Assistant 1.2. 借由人工智能技术,虚拟助手将…

在ABP的应用程序中引用其它的ABP模块

背景 自从使用了ABP框架,模块越拆越细。 1个模块需要打包解决方案“src”下的12个项目:那么我们就需要自动打包并且推送到私有nuget存储库才行。 自动打包可以用Gitlab和配套的Gitlab Runner来完成,参看我的: Gitlab Runner自动打包C#项目并推送到NuGet仓库 私有nuget存储库…

用ABP创建第一个Blazor应用程序

背景 在我们完成了仓储、订单和财务模块的开发之后,我们创建一个应用程序来发布我们的产品。 步骤 1、访问abp的官网 2、得到我们要的abp命令和参数说明:我们选Blazor Server 我们用MySQL数据库3、在PowserShell中执行abp命令 PS X:\abp-study> ls目录: X:\abp-studyMode …

避免被淘汰:如何使用ChatGPT等AI工具革新你的工作方式?进来免费送ChatGPT!

ChatGPT是一个由OpenAI开发的AI文本工具,它可以理解和生成自然语言,从而与用户进行对话。ChatGPT是基于GPT-3或者GPT-4模型的,这是目前最大和最先进的语言模型之一。ChatGPT通过在大量的互联网文本数据上进行预训练和强化学习,学习了人类语言的规律和知识23。ChatGPT可以处…

1. vue3中使用cesium

一、创建Vue3项目 npm create vue二、安装依赖 npm i cesium vite-plugin-cesium -D三、修改配置 修改vite.confg.js import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from @vitejs/plugin-vueimport cesium from vite-plugin-cesiu…

vue 不是内部或外部命令,也不是可运行的程序 或批处理文件解决方法

查看信息 npm config list根据prefix路径,查看是否有vue.cmd文件 参考了这篇 感觉很整齐 如果没有就安装vue npm install -g vue再安装脚手架vue-cli // 安装 npm install -g @vue/cli // 或者 cnpm install -g @vue/cli // 或者 yarn global add @vue/cli然后配置环境变量,…