標籤:
手機自動化架構也比較多,針對ios,android兩個不同的平台,最後我挑選了appium,它是利用webdriver來進行驅動測試的,這個架構我比較熟悉,而且它支援兩個平台。於是我就針對這兩個不同的平台進行了分別的搭建與測試,IOS平台的環境搭建沒有問題,具體搭建方法見:
http://blog.sina.com.cn/s/blog_68f262210102v0ta.html,而測試案例,由於現在我沒有辦法將ipa檔案轉化成app檔案,所以測試案例還沒有搞定。問題解決後,會發相應的文章的。
本篇介紹一下Windows環境下android自動化測試的具體執行個體,環境安裝見:
http://blog.sina.com.cn/s/blog_68f262210102v4aj.html,現在說一下測試案例:
測試對象:網信金融旗下的眾籌網的手機應用
運行對象:android模擬器(真機運行見下篇)
測試案例:簡單的登入
用例語言:webdriver+python
測試步驟:
1,啟動appium
在Windows下,找到appium應用程式,雙擊開啟,然後右上方的appium啟動按鈕,看到輸出日誌,表明啟動成功。
2,啟動android模擬器
模擬器如何建立,參見:
http://blog.sina.com.cn/s/blog_68f262210102v4a7.html,本人建立的模擬器為:antester,啟動方法:在cmd下輸入:emulator @antester,過一會兒就會彈出android模擬器:
3,編寫測試案例
使用你習慣的編輯軟體來寫你的測試案例,我用語言是python,下面介紹一下具體的測試案例。
#-*- coding: UTF-8 -*-
#匯入常用的包
import os
import time
import unittest
from selenium import webdriver
from lib2to3.pgen2.driver import Driver
from lib2to3.tests.support import driver
#設定路徑資訊
PATH=lambda p:os.path.abspath(
os.path.join(os.path.dirname(__file__),p)
)
global driver
class LoginAndroidTests(unittest.TestCase):
def setUp(self):
#初始化測試平台
desired_caps={}
desired_caps[‘device‘] = ‘android‘
desired_caps[‘platformName‘]=‘Android‘ #測試平台
desired_caps[‘browserName‘]=‘‘
desired_caps[‘version‘]=‘4.2.2‘#系統版本
desired_caps[‘deviceName‘]=‘antester‘#模擬器名稱
desired_caps[‘app-package‘]=‘com.subject.zhongchou‘#要測試的app
desired_caps[‘app-activity‘]=‘.ZhongChou‘#當前活動應用
self.driver=webdriver.Remote(‘http://localhost:4723/wd/hub‘,desired_caps)
def tearDown(self):
self.driver.quit()
def test_login(self):
time.sleep(30)
#點擊“註冊登入”按鈕
button=self.driver.find_element_by_id("com.subject.zhongchou:id/register_button")
button.click()
time.sleep(10)
#登入
name =self.driver.find_element_by_id(‘com.subject.zhongchou:id/loginnumber_phone‘)
name.click()
name.send_keys(‘183XXXXX905‘) #輸入使用者名稱
psd =self.driver.find_element_by_id(‘com.subject.zhongchou:id/loginnumber_password‘)
psd.click()
psd.send_keys(‘XXXXXXX‘) #輸入密碼
blogin=self.driver.find_element_by_id(‘com.subject.zhongchou:id/go_numberlogin‘) #單擊登入按鈕
blogin.click()
time.sleep(10)
#此處要檢測是否登入成功,我懶省事,略了!
if __name__ == ‘__main__‘:
suite = unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
上面是一個完整的測試案例,關係到元素的定位,內容的輸入等操作。其實還可以最佳化一下,把測試資料獨立出來放到一個xml檔案中,而且通用的操作,可以放到一個類中封閉成通用方法,此代碼只為了說明測試案例結構用的。
元素的定位
元素的定位是自動化測試的頭等大事,在頁面自動化測試的時候,Selenium IDE提供了很好的定位,錄製等方法。可是在手機自動化測試的時候,沒有很好的工具 ,一般用的是appium inspector, uiautomatorviewer和hierarchyviewer等工具,具體使用方法自己去網上查一下。可是沒有很好的錄製方法,雖然appium inspector在mac上可以對IOS的App進行錄製,但是不太好用。
Appium有一個很好的交流網站:http://www.testerhome.com/topics,大家可以時常去瀏覽一下,相信能學到很多知識的。快速,準確的定位是要靠經驗的,這個文章http://testerhome.com/topics/167,講了一些兒定位方法,希望對大家有所啟發。
Android手機自動化測試執行個體詳解