安卓自动化中Toast的抓取(python+appium)

 

appium自动化中对于出现几秒就消失的文本大为苦恼,用例中需要判断是否登录成功,账号或密码错误,用户不存在等等情况,就需要对它进行捕捉。

1、需要:appium1.6.3以上版本和uiautomator2

2、下载:
安装淘宝源 cnpm: npm install -g cnpm --registry=https://registry.npm.taobao.org
安装appium1.6.3: cnpm install -g appium@1.6.3 后来发现直接下载appium desktop直接是1.7的版本更更方便
下载 uiautomator2: cnpm i appium-uiautomator2-server
pip install --pre uiautomator2 下载

3、实现:

启动参数添加
 desired_caps = {'automationName':'Uiautomator2'}

#  方法一、判断toast是否存在    
def findToast(self,message):
        # format转换message格式,使其加入字符串中//*[@text=message]
        message = '//*[@text=\'{}\']'.format(message)  
        try:   
            #等待元素出现,通过xpath
            element=WebDriverWait(self.dr,10,0.1).until(expected_conditions.presence_of_element_located((By.XPATH,message)))
            return True
        except:  
            return False
# 方法二、通过CLASS_NAME
def findToast(self,driver):
        try:
            WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CLASS_NAME, "area-class-cell-span")))
            return True
        except:
            return False
#方法三、获取text,对比是否存在
def findToast(self,driver,message):
        time.sleep(2)
        ele = driver.find_element_by_class_name("el-message__content").text
        # me=message.decode("utf-8")
        if ele == message:
            return True
        else:
            return False

需要了解显示等待:WebDriverWait().until()方法,EC模块的使用,可以多尝试几种方法来解决。

参考 :记一次appium识别toast问题解决经历(https://www.cnblogs.com/xiaoxu6/p/7930501.html

 

 

posted on 2020-06-11 13:59  波音666  阅读(239)  评论(0编辑  收藏  举报

导航