美文网首页
Android toast的获取

Android toast的获取

作者: 行水坐云 | 来源:发表于2019-07-13 10:07 被阅读0次

    关键词:Android,Appium,Python,Toast

    1、什么是toast?

    toast是一个浮动的显示块,在Android中主要用于提示信息,超时后退出,常用于提示一些不是那么重要的信息;如果是重要的信息,会使用notification。toast比较难定位,一来因为它时间很短,一般3秒左右;二来toast元素一般不写在XML中,代码中直接去调用。

    Toast.makeText(getApplicationContext(),"显示内容",Toast.LENGTH_SHORT).show();
    

    在我们使用自动化框架的时候,经常需要通过toast进行断言。

    下图中点击登录后,弹出的“登录成功”就是个 toast

    image.png toast2.png

    2、环境是什么?

    环境本身比较复杂,网上很多资料说appium要1.6.3以上,Android 5.0以上等各种要求。
    我在调试代码的过程中,appium 报错:io.appium.uiautomator2.server.test does not have a signature,后来几番查阅资料竟然发现安装appium的时候要仅为当前用户,无语...O__O "…

    image.png

    我的环境如下:
    Appium Desktop 1.13.0
    Appium-Python-Client 0.46
    Python 3.6.4
    Android OS 5.0.2
    APP 开发者头条 3.0.2

    为了防止环境有问题,建议大家使用较新的环境。

    3、如何获取Toast?

    1)配置项需要加uiautomator2的引擎

    desired_caps['automationName'] = 'uiautomator2'  # 捕获toast消息
    

    appium启动的时候,会安装如下2个apk

    image.png
    Appium-Uiautomator2-Server 详细的原理,大家可以参考这篇文章:
    https://www.jianshu.com/p/d8457a06c7b7

    2)使用显示等待,固定频率去获取元素

    ele = WebDriverWait(driver, 60, 0.1).until(EC.presence_of_element_located((By.XPATH, f"//*[@text='登录成功']")))
    print(ele.text)
    

    3)最终的代码

    from appium import webdriver
    import  traceback
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    --**此处代码省略,完成webdriver初始化和登录**--
    
    def getResult(driver,text):
    
        try:
            ele = WebDriverWait(driver, 60, 0.1).until(EC.presence_of_element_located((By.XPATH, f"//*[@text='{text}']")))
            print(ele.text)
            return True
        except:
            print(traceback.format_exc())  # 打印报错
            return False
    print(getResult(driver,'登录成功'))
    
    

    至此,结束了,也不是很难,希望对大家有帮助 o(∩_∩)o

    相关文章

      网友评论

          本文标题:Android toast的获取

          本文链接:https://www.haomeiwen.com/subject/jgcpkctx.html