本文不在叙述Appium环境安装。如有需要请参考:http://www.jianshu.com/p/7a6fa7ab662b
1. 创建项目目录
mkdir project{conf,common,logs,doc,tests} #conf:存放appium-android配置设置,以及App页面元素配置文件; #logs:存放日志以及截图; #doc:存放文档; #common:存放工具类的脚本; #tests:存放测试脚本;
整个目录如下:
2. Appium Android配置文件
Appium Android Settings 设置如下:
Python脚本配置如下:
#!/usr/bin/env python # -*- coding:utf-8 -*- import os import sys import time import re from appium import webdriver sys.path.append("..") #用于解决多个手机连接问题 from common.mobile import get_serialno #Read mobile deviceId device_id = get_serialno() #Read mobile os Version os_version = os.popen('adb -s {0} shell getprop ro.build.version.release'.format(device_id)).read() def appium_start(): config = { 'platformName':'Android', #平台 'platformVersion':os_version, #系统版本 'deviceName':device_id, #测试设备ID # 'appPackage':'com.jiuai', # 'appActivity':'.activity.MainActivity', 'app':'/Users/xiaohutu/GitHub/Android-Test/com.jiuai.apk', #apk路径 #'app':'D:\com.jiuai.apk', 'newCommandTimeout':30, 'automationName': 'Appium', 'unicodeKeyboard':True, #编码,可解决中文输入问题 'resetKeyboard':True} return webdriver.Remote('http://localhost:4723/wd/hub', config)
上述脚本保存为:appium_config.py
备注:
from common.mobile import get_serialno 用于解决多个手机连接问题。具体脚本见:https://github.com/yi-heng/Android-Test/blob/master/Template/common/mobile.py
3. Android元素定位
uiautomatorviewer是Android SDK自带的工具,在$ANDROID_HOME/tools目录下,可使用此工具查看页面元素。
使用的测试app为本公司的开发的:旧爱,如下:
driver.find_element_by_id(resource-id).click()
建议:将所有的页面元素集中到一个文件,提高Appium脚本的复用性、可配置性,如命名为config.ini或el.ini
见另外教程:http://www.jianshu.com/p/980a82cde7df
4. 测试脚本编写
4.1 导入相关库
import unittest #Python单元测试框架 from configparser import ConfigParser #读取配置库 from selenium import webdriver #导入selenium库 from appium import webdriver #导入appium库
4.2 导入appium启动脚本
from conf.appium_config import appium_start
4.3 使用Unittest编写测试脚本主体
class ProductInformation(unittest.TestCase): """ TestCase: xxxxx Description: xxxxx """ #@classmethod,在此类中只进行一次初始化和清理工作 @classmethod def setUpClass(self): self.driver = appium_config.appium_start() def test_initial(self): pass @classmethod def tearDownClass(self): self.driver.quit()
4.4 编写测试用例
def test_initial(self): driver.find_element_by_id(resource-id).click() driver.find_element_by_id(resource-id).send_keys(u'测试数据')
4.5 组织运行测试用例
# texture Testcase def suite(): tests = [ "test_initial", ] return unittest.TestSuite(map(ProductInformation,tests)) if __name__ == "__main__": unittest.TextTestRunner(verbosity=2).run(suite())
来源:https://www.cnblogs.com/Snail-offort/p/10818027.html