移动自动化appium --如何获取安卓手机的toast提示语

toastAndroid系统中一种消息框类型,比如很多APP点击一次返回,会有个灰色弹出框提示:“再次点击退出XX”这样的消息,这个弹出框就是toast

那么如何获取到toast显示的内容呢?

 

appiumtoast和找普通的控件没有太大的区别,但是需要先装个东西:

cnpm install appium-uiautomator2-driver

 

然后连接手机或者driver的代码里面增加一个键值对:

'automationName': 'Uiautomator2',

 

'Uiautomator2'是一个可以识别安卓UI界面控件的框架,之前都是使用的'Uiautomator'

 

比如我们进入华为手机的文件管理页面,点击返回,会提示:再次点击即可退出,怎么获取到这个提示呢?

 

代码如下:

import time

from appium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.wait import WebDriverWait

 
"""连接手机,获取driver"""

server = r'http://localhost:4723/wd/hub'  # Appium Server, 端口默认为4723

desired_capabilities = {

    # 设备信息

    'platformName': 'Android',

    'deviceName': '127.0.0.1:62001',

    'platformVersion': '5.1.1',

    # app信息

    'appPackage': ' com.cyanogenmod.filemanager',

    'appActivity': '.activities.NavigationActivity',

    # 中文问题

    'unicodeKeyboard': True,

    'reserKeyBoard': True,

    # 测试完毕退出后不清理APP缓存

    'noReset': True,

    'fullReset': False,

    # toast

    'automationName': 'Uiautomator2'

}

# 声明对象

driver = webdriver.Remote(server, desired_capabilities)  # 连接手机和APP


def find_toast(message):

    message = "//*[contains(@text, '" + message + "')]"

    ele = WebDriverWait(driver, 5, 0.1).until(lambda x : x.find_element(By.XPATH, message))

    return ele.text


time.sleep(3)

driver.press_keycode(4)  # 点击返回按钮,适用于Uiautomator2框架

# driver.keyevent(4)   # 适用于Uiautomator1框架


print(find_toast('退出'))

 

posted @ 2020-04-07 14:13  白杨的博客  阅读(842)  评论(0编辑  收藏  举报