本文不在敘述Appium環境安裝。若有須要請參考:http://www.jianshu.com/p/7a6fa7ab662bjavascript
mkdir project{conf,common,logs,doc,tests}
#conf:存放appium-android配置設置,以及App頁面元素配置文件; #logs:存放日誌以及截圖; #doc:存放文檔; #common:存放工具類的腳本; #tests:存放測試腳本;
整個目錄以下:css
Appium Android Settings 設置以下:java
Python腳本配置以下: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.pyandroid
備註:git
from common.mobile import get_serialno 用於解決多個手機鏈接問題。具體腳本見:https://github.com/yi-heng/Android-Test/blob/master/Template/common/mobile.py
uiautomatorviewer是Android SDK自帶的工具,在$ANDROID_HOME/tools目錄下,可以使用此工具查看頁面元素。
使用的測試app爲本公司的開發的:舊愛,以下:github
driver.find_element_by_id(resource-id).click()
建議:將全部的頁面元素集中到一個文件,提升Appium腳本的複用性、可配置性,如命名爲config.ini或el.ini
見另外教程:http://www.jianshu.com/p/980a82cde7dfweb
import unittest #Python單元測試框架 from configparser import ConfigParser #讀取配置庫 from selenium import webdriver #導入selenium庫 from appium import webdriver #導入appium庫
from conf.appium_config import appium_start
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()
def test_initial(self): driver.find_element_by_id(resource-id).click() driver.find_element_by_id(resource-id).send_keys(u'測試數據')
# texture Testcase def suite(): tests = [ "test_initial", ] return unittest.TestSuite(map(ProductInformation,tests)) if __name__ == "__main__": unittest.TextTestRunner(verbosity=2).run(suite())