上一篇讲到基于Java语言的appium自动化测试。老实说,在使用的过程中让人极其不快,它没有接口自动化的速度,甚至于比UI自动化慢很多。在代码运行过程中,总是会由于各种问题,导致代码运行中断,需要我们不断的加等待时间来增强代码的稳定性。其次就是对于元素的获取很麻烦,appium自带的截屏工具会与脚本运行占端口,对于元素定位失败想重新获取其他元素进行定位时,还需要重新启动截屏工具。最后就是adb也不是很稳定,总是会出环境变量的一些问题。所以说,就效率而言,移动端进行自动化,还使用Java语言,应该考虑好是否真的可行。 今天带来的是运用python语言进行appium移动端自动化测试,整体会比Java语言来的流畅,运行速度也会有所提高,如果需要自动化,运用python是一个不错的选择
步骤:
写一个类,继承unittest.TestCasesetUp函数中写配置appium参数和调用appium测试用例函数中写登录qq的代码tearDown函数中写关闭app的代码最后unittest.main()调用比如: xiaoMiCase.py
import time import unittest from appium import webdriver class xiaoMiCase(unittest.TestCase): def setUp(self): # 配置appium参数 # 定义一个字典 des_cps = {} # 平台 des_cps['platformName'] = 'android' # 设备名 des_cps['deviceName'] = 'Android Emulator' # 版本号 des_cps['platformVersion'] = '5.1.1' # 不需要重新设置 des_cps['noReset'] = True # 包名 des_cps['appPackage'] = 'com.xiaomi.shop' # 活动页 des_cps['appActivity'] = 'com.xiaomi.shop2.activity.MainActivity' # 启动aapium self.dr = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des_cps) def testXiaoMi(self): time.sleep(2) self.dr.find_element_by_android_uiautomator('new UiSelector().text("分类")').click() time.sleep(2) self.dr.find_element_by_android_uiautomator('new UiSelector().text("电视")').click() time.sleep(2) self.dr.find_element_by_android_uiautomator('new UiSelector().text("激光投影电视")').click() time.sleep(2) self.dr.find_element_by_android_uiautomator('new UiSelector().text("米家投影仪 青春版2")').click() time.sleep(2) aa = self.dr.find_element_by_id('com.xiaomi.shop2.plugin.goodsdetail:id/product_name').is_displayed() self.assertTrue(aa) def tearDown(self): time.sleep(5) self.dr.quit()maintest.py
import unittest from HTMLTestRunner import HTMLTestRunner discover = unittest.defaultTestLoader.discover(r'C:\XXX\python\appium1\case',pattern='*.py') with open(r"C:\XXX\res.html","wb") as f: runner = HTMLTestRunner(stream=f,verbosity=-1,title='移动端自动化测试报告',description='抖音、QQ、小米移动端测试报告') runner.run(discover)至于自动化集成部署,请移步:自动化测试集成之Jenkins的安装与部署
