Appium自动化测试中获取Toast信息操作

作者:测试之路king 时间:2022-05-12 07:10:48 

Toast简介

Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。

Toast 定位

Appium 1.6.3开始支持识别Toast内容,主要是基于UiAutomator2,因此需要在Capablity配置参数

启动参数配置

desired_caps['automationName']='uiautomator2'

环境

  • Appium-Python-Client: 2.1.2

  • selenium: 4.1.0

  • Appium:v1.20.2

测试应用

  • 网易云课堂

测试设备

  • 夜神模拟器 Android 7.1.2

测试场景

  • 进入登录界面输入用户名和错误的密码,获取Toast内容

代码实现

# _*_ coding:utf-8 _*_

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

desired_caps = {
    "platformName": "Android",
    "platformVersion": "7.1.2",
    "udid": "127.0.0.1:62001",
    "appPackage": "com.netease.edu.study",
    "appActivity": "com.netease.edu.study.activity.ActivityWelcome",
    "noReset": True,
    'automationName': 'uiautomator2'
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
driver.implicitly_wait(30)

# 点击我的菜单
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tab_account").click()

# 点击登录注册按钮
driver.find_element(AppiumBy.XPATH, "//*[@text='登录/注册']").click()

# 点击手机号码登录
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/login_phone_login").click()

# 输入手机号码
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tv_phone_num").send_keys("132****475")

# 输入错误密码
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tv_phone_pwd").send_keys("wy12345")

# 点击登录按钮
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/button").click()

# 获取toast提示
toast_text = driver.find_element(AppiumBy.XPATH, "//*[@class=\"android.widget.Toast\"]").text
print(toast_text)

执行结果:

Appium自动化测试中获取Toast信息操作

说明

toast 获取主要使用一个通用的class属性获取,通过xpath的方式://*[@class="android.widget.Toast"]

toast信息存在是否存在判断封装

代码

def is_toast_exist(driver,text,timeout=20,poll_frequency=0.5):
    '''is toast exist, return True or False
    :Agrs:
     - driver - 传driver
     - text   - 页面上看到的文本内容
     - timeout - 最大超时时间,默认20s
     - poll_frequency  - 间隔查询时间,默认0.5s查询一次
    :Usage:
     is_toast_exist(driver, "看到的内容")
    '''
    try:
        toast_loc = ("xpath", ".//*[contains(@text,'%s')]"%text)
        WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
        return True
    except:
        return False

toast信息内容获取

代码

def is_toast_exist(driver,timeout=20,poll_frequency=0.5):
    '''is toast exist, return toast_text or None
    :Agrs:
     - driver - 传driver
     - timeout - 最大超时时间,默认20s
     - poll_frequency  - 间隔查询时间,默认0.5s查询一次
    :Usage:
     is_toast_exist(driver)
    '''
    try:
        toast_loc = ("xpath", "//*[@class=\"android.widget.Toast\"]")
        WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
        toast_text = driver.find_element(AppiumBy.XPATH, "//*[@class=\"android.widget.Toast\"]").text
        return toast_text
    except:
        return None

来源:https://ceshizhilu.blog.csdn.net/article/details/122693435

标签:Appium,获取,Toast
0
投稿

猜你喜欢

  • pycharm中jupyter的使用图文教程

    2023-10-01 13:36:11
  • Go singleflight使用以及原理

    2024-04-27 15:31:09
  • Python中eval函数的表达式作用示例

    2022-06-14 02:18:32
  • Oracle SID存在解決方法

    2009-06-19 17:34:00
  • Go语言从单体服务到微服务设计方案详解

    2023-09-02 02:45:57
  • 解决pytorch 数据类型报错的问题

    2022-12-22 08:55:04
  • Python实现在tkinter中使用matplotlib绘制图形的方法示例

    2022-12-16 03:43:37
  • Javascript 中对中文长度对行判断

    2009-07-05 18:39:00
  • PHP 进程锁定问题分析研究

    2023-11-21 18:14:10
  • Python+Kepler.gl实现时间轮播地图过程解析

    2021-03-27 00:20:52
  • tensorflow中next_batch的具体使用

    2023-04-21 05:34:02
  • wxPython使用系统剪切板的方法

    2023-04-01 14:38:29
  • js 分页全选或反选标识实现代码

    2024-04-22 22:44:07
  • 用python登录带弱图片验证码的网站

    2023-04-28 12:22:22
  • 如何基于Python pygame实现动画跑马灯

    2023-09-07 18:56:59
  • VB.NET调用MySQL存储过程并获得返回值的方法

    2024-01-12 16:03:45
  • 详解Python执行py文件是否需要可执行权限

    2021-01-19 10:52:53
  • Python3解释器知识点总结

    2023-08-02 04:55:38
  • 请不要重复犯我在学习Python和Linux系统上的错误

    2023-05-05 05:01:31
  • python实现堆栈与队列的方法

    2023-06-19 02:57:04
  • asp之家 网络编程 m.aspxhome.com