Android自動化教程實戰:Appium+Python (對應的連接地址:https://www.jianshu.com/p/8b06f76be7e6)

本文不在敘述Appium環境安裝。若有須要請參考:http://www.jianshu.com/p/7a6fa7ab662bjavascript

1. 建立項目目錄

mkdir project{conf,common,logs,doc,tests}

#conf:存放appium-android配置設置,以及App頁面元素配置文件; #logs:存放日誌以及截圖; #doc:存放文檔; #common:存放工具類的腳本; #tests:存放測試腳本; 

整個目錄以下:css

 
Paste_Image.png

2. Appium Android配置文件

Appium Android Settings 設置以下:java


 
Paste_Image.png

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 

3. Android元素定位

uiautomatorviewer是Android SDK自帶的工具,在$ANDROID_HOME/tools目錄下,可以使用此工具查看頁面元素。
使用的測試app爲本公司的開發的:舊愛,以下:github

 
Paste_Image.png
driver.find_element_by_id(resource-id).click() 

建議:將全部的頁面元素集中到一個文件,提升Appium腳本的複用性、可配置性,如命名爲config.ini或el.ini
見另外教程:http://www.jianshu.com/p/980a82cde7dfweb

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()) 
相關文章
相關標籤/搜索