appium之安卓特殊控件toast识别

toast介绍

1.背景
在安卓设备里面,使用各种手机应用程序的时候,需要先进行登录操作。如果登录成功,手机下方会弹出一个“登录成功”的消息提示,一个简单的提醒,同时又不会打扰到用户,这个就是toast。
2.简介
toast,简单的消息提示框。
2.1 为了给当前视图显示一个浮动的显示块,与dialog不同,它永远不会获取焦点。
2.2 Toast类的思想:尽可能不引人注意,同时还向用户显示信息希望他们看到
2.3 Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失。
2.4 Toast本身是个系统级别的控件,它归属于系统settings,当一个app发送消息的时候,不是自己造出来的这个弹框,它是发给系统,由系统统一进行弹框。这类的控件不在app内,需要特殊的控件识别方法。

toast定位

1.appium使用uiautomator底层的机制来分析抓取toast,并且把toast放到控件树里面,但是本身并不属于控件。
2.automationName:uiautomator2
3.getPageSource是无法找到的
4.必须使用xpath查找

 //*[class='android.widget.Toast']
 //*[contains(@text,'xxxx')]

关键代码

def test_toast(self):
	print(self.driver.find_element(MobileBy.XPATH, "//*[@class='android.widget.Toast']").text

也可以通过text属性进行定位:

def test_toast(self):
    print(self.driver.find_element(MobileBy.XPATH, "//*[contains(@text, 'cliean up')]").text)

如何去定位一个toast属性?

首先应该在desired capability里添加一个属性:

desired_caps['automationName'] = 'uiautomator2'

uiautomator2是Android的默认工作引擎,在安卓设备里面,加不加这段代码都可以。

登录成功的断言

def test_toast(self):
    login_success = self.driver.find_element(MobileBy.XPATH, "//*[contains(@text, 'cliean up')]").text
    assert login_success == '登录成功'

完整代码

class TestToast():
    def setup(self):
        desired_caps = {}
        desired_caps['platformName'] = 'android'
        desired_caps['platformVersion'] = '6.0'
        desired_caps['deviceName'] = 'emulator-5554'
        desired_caps['appActivity'] = 'io.appium.android.apis.view.Poppuu'
        desired_caps['appPackage'] = 'io.appium.android.apis'
        desired_caps['automationName'] = 'uiautomator2'
        desired_caps['dontStopAppOnReset'] = 'true'
        desired_caps['noReset'] = 'true'
        desired_caps['skipDeviceInitialization'] = 'true'
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
        self.driver.implicitly_wait(5)

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

    def test_toast(self):
        login_success = self.driver.find_element(MobileBy.XPATH, "//*[contains(@text, '登录成功')]").text
        assert login_success == '登录成功'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值