写点什么

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

  • 2024-03-20
    北京
  • 本文字数:1089 字

    阅读完需:约 4 分钟

简介

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() # 消息框类型选择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 的方式去定位。

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
快速上手App自动化测试利器,Toast原理解析及操作实例_霍格沃兹测试开发学社_InfoQ写作社区