一、安装过程中的坑,完美安装耗费了我至少5天时间,后来才发现,买个VPN就能解决。因为最新版的APPIUM,1.6.3安装时需要下载uiautomator2的两个APK文件,目前网上的各种教程都是让人把NPM源地址设成国内的淘宝就能下载成功。虽然淘宝的源地址能让appium包下载下来,但是安装过程中还是有些文件需要****才能下载。虽然这些FQ才能下载的文件都是不必须的文件,但是在后来的实际运用过程这些文件都有至关重要的作用,所以各位在学习APPIUM之前请先学会****,并且能够成功的在VPN网络环境下使用NPM安装软件。
二、安卓端APPUI层自动化测试中,对于toast信息的识别,这个问题网上很少有人提及,而且文章年代久远,很多人采用了曲线救国的办法。在这里我建议大家使用appium的最新版1.6.3,在这个版本中已经解决了toast的识别问题,直接上代码:
desired_caps = {'automationName': "Uiautomator2",
请在启动参数中加入识别器的选择,使用Uiautomator2识别器,这个识别器目前不仅能识别app元素,也能抓取toast上的文字信息,这也是为什么我在上文中说到这个需要FQ才能下载下来的文件很重要,利用toast的字符串提示信息,我们可以对功能进行断言,以精简我们的测试用例步骤。下面我们再将识别的方法封装起来,
#toast.py
# -*- coding: utf8 -*- from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.ui import WebDriverWait import sys reload(sys) sys.setdefaultencoding('utf-8') def find_toast(message, timeout, poll_frequency, driver): u'''获取toast信息文本并验证''' message = "//*[@text=\'{}\']".format(message) element = WebDriverWait(driver, timeout, poll_frequency).until( expected_conditions.presence_of_element_located((By.XPATH, message))) print element
#end
用例中遇到需要对toast字符串断言的时候,直接导入模块,将预期结果的字符串作为识别方法的参数调用方法,例如
import toast,login
def testNullLogin(self): u"""输入框为空登录""" login.login(self.driver, 'denglin@adas.com', '') toast.find_toast(u'账号和密码不能为空', 10, 0.01, self.driver)
一旦出现了携带与字符串参数一致的toast元素,该用例便通过。
其中import sys reload(sys) sys.setdefaultencoding('utf-8')这三行代码非常重要,如果不加入的话,将导致toast中文字符串不能识别
三、安卓SDK中各类工具的版本请更新到最新版,否则将导致一些脚本执行过程中出现错误,比如
driver.set_network_connection(6)
如果使用的build tools版本为23.X,将导致该脚本只能在虚拟机上运行。
待更。。
—————作者保留一切权利,转载请说明出处
浙公网安备 33010602011771号