安卓自动化中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)