appium之toast处理

注意

toast要appium1.6.3以上版本才支持,appium1.4的版本就别浪费时间了

toast定位

1.先看下toast长什么样,如下图,像这种弹出来的消息"再按一次退出",这种就是toast了。

2.想定位toast元素,这里一定要注意automationName的参数必须是Uiautomator2才能定位到。

‘automationName‘: ‘Uiautomator2‘

# coding:utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

desired_caps = {
                ‘platformName‘: ‘Android‘,
                ‘deviceName‘: ‘127.0.0.1:62001‘,
                ‘platformVersion‘: ‘4.4.2‘,
                ‘appPackage‘: ‘com.baidu.yuedu‘,
                ‘appActivity‘: ‘com.baidu.yuedu.splash.SplashActivity‘,
                ‘noReset‘: ‘true‘,
                ‘automationName‘: ‘Uiautomator2‘
                }
driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)

# 等主页面activity出现
driver.wait_activity(".base.ui.MainActivity", 10)

driver.back()   # 点返回

# 定位toast元素
toast_loc = ("xpath", ".//*[contains(@text,‘再按一次退出‘)]")
t = WebDriverWait(driver, 10, 0.1).until(EC.presence_of_element_located(toast_loc))
print t

3.打印出来的结果,出现如下信息,说明定位到toast了

<appium.webdriver.webelement.WebElement (session="02813cce-9aaf-4754-a532-07ef7aebeb88", element="339f72c4-d2e0-4d98-8db0-69be741a3d1b")>

封装toast判断

1.单独写一个函数来封装判断是否存在toast消息,存在返回True,不存在返回False

def is_toast_exist(driver,text,timeout=30,poll_frequency=0.5):
    ‘‘‘is toast exist, return True or False
    :Agrs:
     - driver - 传driver
     - text   - 页面上看到的文本内容
     - timeout - 最大超时时间,默认30s
     - 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

参考代码

# coding:utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
desired_caps = {
                ‘platformName‘: ‘Android‘,
                ‘deviceName‘: ‘127.0.0.1:62001‘,
                ‘platformVersion‘: ‘4.4.2‘,
                ‘appPackage‘: ‘com.baidu.yuedu‘,
                ‘appActivity‘: ‘com.baidu.yuedu.splash.SplashActivity‘,
                ‘noReset‘: ‘true‘,
                ‘automationName‘: ‘Uiautomator2‘
                }

def is_toast_exist(driver,text,timeout=30,poll_frequency=0.5):
    ‘‘‘is toast exist, return True or False
    :Agrs:
     - driver - 传driver
     - text   - 页面上看到的文本内容
     - timeout - 最大超时时间,默认30s
     - 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

if __name__ == "__main__":
    driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)

    # 等主页面activity出现
    driver.wait_activity(".base.ui.MainActivity", 10)

    driver.back()   # 点返回

    # 判断是否存在toast-‘再按一次退出‘
    print is_toast_exist(driver, "再按一次退出")

原文地址:https://www.cnblogs.com/xiaohuhu/p/9895596.html

时间: 2024-10-08 19:33:19

appium之toast处理的相关文章

Appium获取toast消息遇到的问题(一)

一.运行错误 Android获取toast,需要在参数里设置automationName:Uiautomator2 1 # 设置设备的信息 2 desired_caps = { 3 'platformName': 'Android', # 平台 4 'platformVersion': '5.1', # 版本号 5 'deviceName': 6 'appPackage': 7 'appActivity': 8 'unicodeKeyboard': 'True', # 防止键盘中文不能输入 9

Appium获取toast消息(二)

刚接触appium进行移动端设备的UI自动化,在遇到toast消息的时候很是苦恼了一阵,最后通过强大的搜索引擎找到了个相对解决方法,废话不多说,直接贴代码↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓: 1 from selenium.webdriver.support.ui import WebDriverWait 2 from selenium.webdriver.support import expected_conditions as EC 3 4 def is_toast_exi

Appium获取toast消息

Android获取toast,需要在参数里设置automationName:Uiautomator2 设置设备的信息 desired_caps = { 'platformName': 'Android', # 平台 'platformVersion': '5.1', # 版本号 'deviceName': 'appPackage': 'appActivity': 'unicodeKeyboard': 'True', # 防止键盘中文不能输入 'resetKeyboard': 'True', #

Python+Appium 获取 toast 方法的封装

获取toast内容方法封装如下: def get_Toast(self,message): #查找toast值 ''' method explain:查找toast的值,与find_Toast实现方法一样,只是不同的2种写法 parameter explain:[text]查找的toast值 Usage: device.get_Toast('再按一次退出iBer') ''' logging.info("查找toast值---'%s'" %(message)) try: message

Python+Appium 查找 toast 方法的封装

使用场景:在操作应用时常见toast弹框,通过toast弹框信息的获取判断当前的某个操作是否成功 引用的包:from selenium.webdriver.support import expected_conditions as EC,\expected_conditions from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait 截图如下,查找如下截

appium定位toast消息的使用

定位使用xpath后,定位消息文本,然后使用text获取消息文本做断言.toast_loc = ("xpath", ".//*[contains(@text,'切换运营商成功')]")elm = WebDriverWait(self.driver, 5).until(EC.presence_of_element_located(toast_loc)) self.assertEqual(elm.text,'切换运营商成功') 进行断言 原文地址:https://www

使用appium框架测试安卓app时,获取toast弹框文字时,前一步千万不要加time.sleep等等待时间。

使用appium框架测试安卓app时,如果需要获取toast弹框的文案内容,那么再点击弹框按钮之前,一定记得千万不要加time.sleep()等待时间,否则有延迟,一直获取不到: 获取弹框的代码: message=self.driver.find_element_by_xpath("//*[contains(@text,'成功添加到购物车')]")   原文地址:https://www.cnblogs.com/zhouchuanlun/p/12687890.html

python appium 封装获取toast方法

获取toast text封装,传入toast 部分文本,返回全部文本 def get_toast_text(self,text): try: toast_loc = (By.XPATH, "//*[contains(@text,'"+text+"')]") logger.info(toast_loc) ele = WebDriverWait(self.driver, 10, 0.1).until(EC.presence_of_element_located(toas

Android appium自动化测试中Toast

1. 首先执行这个命令:npm install -g cnpm --registry=https://registry.npm.taobao.org       安装cnpm npm安装不了时,可以先安装NPM镜像,地址:https://npm.taobao.org/: npm install -g cnpm -- cnpm install appium-uiautomator2-driver   安装uiautomator2的配置文件 需要导入的包: from selenium.webdriv