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

简介: `Toast`是Android中的轻量级通知,短暂显示在屏幕任意位置,1-2秒后自动消失,不获取焦点且不可点击。Appium通过uiautomator2在控件树中处理Toast。在测试中,可设置隐式等待,利用XPath或Accessibility ID定位Toast元素进行检测和验证。示例代码展示了如何初始化driver,点击触发Toast,以及如何定位并读取Toast文本。

简介

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

Toast具有如下的特点:

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

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

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

image.png

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()
      # 消息框类型选择search
      self.driver.find_element(AppiumBy.XPATH, "//*[@text='Search']").click()
      # 获取 Toast 弹框文本信息
      result = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text, 'Clicked popup')]").text
      assert result == "Clicked popup menu item Search"

总结

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

相关文章
|
8月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
8月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
11月前
|
存储 人工智能 测试技术
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
551 2
|
6月前
|
监控 Java 关系型数据库
面试性能测试总被刷?学员真实遇到的高频问题全解析!
面试常被性能测试题难住?其实考的不是工具,而是分析思维。从脚本编写到瓶颈定位,企业更看重系统理解与实战能力。本文拆解高频面试题,揭示背后考察逻辑,并通过真实项目训练,帮你构建性能测试完整知识体系,实现从“会操作”到“能解决问题”的跨越。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
2195 8
|
存储 缓存 负载均衡
阿里云服务器实例选择指南:热门实例性能、适用场景解析对比参考
2025年,在阿里云的活动中,主售的云服务器实例规格除了轻量应用服务器之外,还有经济型e、通用算力型u1、计算型c8i、通用型g8i、计算型c7、计算型c8y、通用型g7、通用型g8y、内存型r7、内存型r8y等,以满足不同用户的需求。然而,面对众多实例规格,用户往往感到困惑,不知道如何选择。本文旨在全面解析阿里云服务器实例的各种类型,包括经济型、通用算力型、计算型、通用型和内存型等,以供参考和选择。
|
7月前
|
人工智能 自然语言处理 前端开发
深度解析Playwright MCP:功能、优势与挑战,AI如何提升测试效率与覆盖率
Playwright MCP通过AI与浏览器交互,实现自然语言驱动的自动化测试。它降低门槛、提升效率,助力测试工程师聚焦高价值工作,是探索性测试与快速验证的新利器。
|
7月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
9月前
|
JavaScript 前端开发 测试技术
Playwright自动化测试系列课(4) | 异步加载克星:自动等待 vs 智能等待策略深度解析​
本文深度解析Playwright自动化测试中的等待策略,对比自动等待(零配置防御机制)与智能等待(精准控制异步场景)的核心差异。通过实战案例讲解等待机制的选择标准、常见失效原因及调试技巧,帮助开发者有效解决页面异步加载问题,提升测试脚本的稳定性和执行效率。
|
8月前
|
人工智能 资源调度 jenkins
精准化回归测试:大厂实践与技术落地解析
在高频迭代时代,全量回归测试成本高、效率低,常导致关键 bug 漏测。精准化测试通过代码变更影响分析,智能筛选高价值用例,显著提升测试效率与缺陷捕获率,实现降本增效。已被阿里、京东、腾讯等大厂成功落地,成为质量保障的新趋势。

热门文章

最新文章

推荐镜像

更多
  • DNS