Android自動(dòng)化教程實(shí)戰(zhàn):Appium+Python

本文不在敘述Appium環(huán)境安裝。如有需要請(qǐng)參考:http://www.itdecent.cn/p/7a6fa7ab662b

1. 創(chuàng)建項(xiàng)目目錄

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

#conf:存放appium-android配置設(shè)置,以及App頁(yè)面元素配置文件;
#logs:存放日志以及截圖;
#doc:存放文檔;
#common:存放工具類(lèi)的腳本;
#tests:存放測(cè)試腳本;

整個(gè)目錄如下:

Paste_Image.png

2. Appium Android配置文件

Appium Android Settings 設(shè)置如下:


Paste_Image.png

Python腳本配置如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import sys
import time
import re
from appium import webdriver

sys.path.append("..")
#用于解決多個(gè)手機(jī)連接問(wèn)題
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',                      #平臺(tái)
        'platformVersion':os_version,                  #系統(tǒng)版本
        'deviceName':device_id,                        #測(cè)試設(shè)備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,                         #編碼,可解決中文輸入問(wèn)題
        'resetKeyboard':True}
    return  webdriver.Remote('http://localhost:4723/wd/hub', config)

上述腳本保存為:appium_config.py

備注:

from common.mobile import get_serialno
用于解決多個(gè)手機(jī)連接問(wèn)題。具體腳本見(jiàn):https://github.com/yi-heng/Android-Test/blob/master/Template/common/mobile.py

3. Android元素定位

uiautomatorviewer是Android SDK自帶的工具,在$ANDROID_HOME/tools目錄下,可使用此工具查看頁(yè)面元素。
使用的測(cè)試app為本公司的開(kāi)發(fā)的:舊愛(ài),如下:

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

建議:將所有的頁(yè)面元素集中到一個(gè)文件,提高Appium腳本的復(fù)用性、可配置性,如命名為config.ini或el.ini
見(jiàn)另外教程:http://www.itdecent.cn/p/980a82cde7df

4. 測(cè)試腳本編寫(xiě)

4.1 導(dǎo)入相關(guān)庫(kù)
import unittest                                   #Python單元測(cè)試框架
from configparser import ConfigParser             #讀取配置庫(kù)
from selenium import webdriver                    #導(dǎo)入selenium庫(kù)
from appium import webdriver                      #導(dǎo)入appium庫(kù)
4.2 導(dǎo)入appium啟動(dòng)腳本
from conf.appium_config import appium_start
4.3 使用Unittest編寫(xiě)測(cè)試腳本主體
class ProductInformation(unittest.TestCase):
    """
    TestCase: xxxxx
    Description: xxxxx
    """
    #@classmethod,在此類(lèi)中只進(jìn)行一次初始化和清理工作 
    @classmethod
    def setUpClass(self):
        self.driver = appium_config.appium_start()

    def test_initial(self):
        pass

    @classmethod
    def tearDownClass(self):
        self.driver.quit()

4.4 編寫(xiě)測(cè)試用例
def test_initial(self):
   driver.find_element_by_id(resource-id).click()
   driver.find_element_by_id(resource-id).send_keys(u'測(cè)試數(shù)據(jù)')
4.5 組織運(yùn)行測(cè)試用例
# texture Testcase
def suite():
    tests = [
        "test_initial",        
    ]
    return unittest.TestSuite(map(ProductInformation,tests))

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(suite())

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,926評(píng)論 25 709
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 前言 做Android端功能自動(dòng)化已有2年多的時(shí)間了,使用過(guò)的功能自動(dòng)化框架有Robotium、Uiautomat...
    海波筆記閱讀 17,210評(píng)論 3 66
  • 有人問(wèn)我:為什么喜歡晚上出去跑步? 我回答:愛(ài)像風(fēng)一樣自由! 每晚十點(diǎn),我準(zhǔn)時(shí)穿上跑鞋,帶上隨身聽(tīng),出門(mén)慢跑。晚上...
    xinanxiao閱讀 973評(píng)論 46 72
  • 同事博士畢業(yè),會(huì)希望我給他們畫(huà)封面……這是我的小樂(lè)趣:沒(méi)有什么能比工作與愛(ài)好重合的感覺(jué)更好了。
    妙MeowMooo閱讀 533評(píng)論 8 3

友情鏈接更多精彩內(nèi)容