appium-toast控件识别

toast介绍

  • toast:简易的消息提示框
  • 为了给当前视图显示一个浮动的显示块,与dialog不同,它永远不会获得焦点
  • Toast类的思想:尽可能不引人注意,同时还向用户显示信息希望他们看到
  • Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失
  • Toast本身是个系统级别的控件,它归属于系统settings,当一个app发送消息的时候,不是自己造出来的这个弹框,它是发给系统,由系统统一进行弹框,这类的控件不在app内,需要特殊的控件识别方法

toast定位

  • appium使用uiautomator底层的机制来分析抓取toast,并且把toast放到控件树里面,但本身并不属于控件
  • capabilities中添加设置 automationName:uiautomator2
    – appium本身的设置就自带的,不需要额外添加,默认就是uiautomator2
  • getPageSource是无法找到的??存疑
  • 必须使用xpath查找
    – //[@class=‘android.widget.Toast’]
    – //
    [contains(@text,“XXX”)]

例子

import time

from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy


class TestToast:
    def setup(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['deviceName'] = 'true'
        desired_caps['appPackage'] = 'io.appium.android.apis'
        desired_caps['appActivity'] = 'io.appium.android.apis.view.PopupMenu1'
        desired_caps['noReset'] = "true"
        # appium本身的设置就自带的,不需要额外添加,默认就是uiautomator2
        desired_caps['automationName'] = "uiautomator2"
        self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
        self.driver.implicitly_wait(10)

    def teardown(self):
        self.driver.quit()

    def test_toast(self):
        self.driver.find_element(MobileBy.ACCESSIBILITY_ID, 'Make a Popup!').click()
        self.driver.find_element(MobileBy.ID, 'android:id/title').click()
        # 获取页面源码
        # print(self.driver.page_source)
        # 第一种获取toast方式
        print(self.driver.find_element(MobileBy.XPATH, '//*[@class="android.widget.Toast"]').text)
        # 第二种获取toast方式
        print(self.driver.find_element(MobileBy.XPATH, '//*[contains(@text, "Clicked popup")]').text)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值