等峰也等你

博客园 首页 新随笔 联系 订阅 管理

Toast 是什么

  • 一种消息框类型

  • 永远不会获得焦点

    • 无法被点击
  • Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失

  • 是系统级别的控件,属于系统settings

  • Toast类的思想:

  • 就是尽可能不引人注意,同时还向用户显示信息,希望他们看到

Toast 定位

  • appium 用的是uiautomator底层来抓取toast,
  • 再把toast放到控件树内,但是它本身不属于空间
  • 使用的是uiautomator2

Toast 定位

  • xpath 可以找到 ``` //*[@class="android.widget.Toast"]

    //*[contains(@text,"xxx")] ``` xxx:toast的文本内容

    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(50));  
    driver.findElement(AppiumBy.xpath("//*[@class=\"android.widget.Toast\"]"));

演示结果

 

 adb shell dumpsys window | findstr mCurrent

# _*_ coding:utf-8 _*_
# @Author : Sam
from appium import webdriver
from appium.options.common import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy


class TestTost:
def setup_class(self):
# 设置启动参数
print("setup_class")
# 定义一个字典
caps = {}
# 设置 app 安装平台
caps["platformName"] = "Android"
# 设置 app 安装平台的版本
caps["platformVersion"] = "6"
# 设备的名字
caps["deviceName"] = "127.0.0.1:7555"
# 设置 app 的包名
caps["appPackage"] = "io.appium.android.apis"
# 设置 app 启动页 adb logcat ActivityManager:I | findstr "cmp"
caps["appActivity"] = "io.appium.android.apis.view.PopupMenu1"
# 不清空缓存
# caps["noReset"] = True
# tost 使用:automationName : uiauromator2 工作引擎 默认自带
# 实例化 appiumOptions 对象
self.options = AppiumOptions().load_capabilities(caps)
# 连接 appium server
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", options=self.options)
# 设置全局的隐式等待
self.driver.implicitly_wait(10)

def teardown_class(self):
# 退出app
self.driver.quit()

def test_tost(self):
self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Make a Popup!").click()
self.driver.find_element(AppiumBy.XPATH, "//*[@text='Search']").click()
# print(self.driver.page_source)
# print(self.driver.find_element(AppiumBy.XPATH, "//*[@class='android.widget.Toast']").text)
self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text, 'Clicked popup menu item Search')]")
posted on 2023-12-20 10:46  等峰也等你  阅读(16)  评论(0编辑  收藏  举报