Appium IOS 自動(dòng)化測(cè)試初探
手機(jī)平臺(tái)的自動(dòng)化測(cè)試工具很多,之前研究過(guò)了安卓和蘋(píng)果的原生自動(dòng)化測(cè)試框架,經(jīng)一些同事介紹,貌似Appium是個(gè)不錯(cuò)的工具。
想記錄一下研究的結(jié)果,也算是篇干貨的文章
在網(wǎng)上也看了一些視頻,個(gè)人認(rèn)為這個(gè)自動(dòng)化測(cè)試的特點(diǎn)就是
1. 多編程語(yǔ)言支持
相對(duì)于傳統(tǒng)的IOS UIautomation只能支持js語(yǔ)言,Appium起到了一個(gè)翻譯的作用,它其實(shí)是一個(gè)CS架構(gòu),服務(wù)器和IOS模擬器或真機(jī)直接通訊,客戶(hù)端和服務(wù)器之間用HTTP協(xié)議進(jìn)行交互,所以客戶(hù)端用什么語(yǔ)言其實(shí)不重要。下面會(huì)有一個(gè)python編程的實(shí)際例子。
2. 遠(yuǎn)程測(cè)試支持
正如上面說(shuō)的,客戶(hù)端和服務(wù)器之間用HTTP協(xié)議通訊,那么也就是說(shuō),客戶(hù)端可以和服務(wù)器在同一臺(tái)機(jī)器或者不同的機(jī)器。
3. 較好的錄制功能
Appium提供了一個(gè)很好的錄制工具,可以讓程序員一步一步的把步驟進(jìn)行精確的錄制
4. 單步調(diào)試
程序員可以利用高級(jí)腳本語(yǔ)言,比如Python對(duì)被測(cè)程序進(jìn)行單步調(diào)試,比如一條命令對(duì)應(yīng)一個(gè)UI動(dòng)作
如何使用appium,基于2014年5月份發(fā)布的appium 1.0來(lái)說(shuō),大約是這樣的,
你必須要有xcode進(jìn)行自動(dòng)化測(cè)試的基礎(chǔ),如果沒(méi)有的話(huà),請(qǐng)先補(bǔ)習(xí)
A. 如果是模擬器測(cè)試
1. 選擇應(yīng)用安裝包的位置
2. 再選擇期望的模擬器平臺(tái),IOS版本,再點(diǎn)Launch就可以了
3. Launch之后會(huì)發(fā)現(xiàn)什么都沒(méi)有,其實(shí)Appium已經(jīng)運(yùn)行了,請(qǐng)注意運(yùn)行的窗口中有沒(méi)有錯(cuò)誤
4. 下面就是錄測(cè)試用例,點(diǎn)擊一個(gè)藍(lán)色的底,白色的i的按鈕
5. 過(guò)一段時(shí)間后就會(huì)出現(xiàn)inspector的窗口
6. 下面是一個(gè)例子,比如我要點(diǎn)一個(gè)按鈕,
6.1 首先現(xiàn)在左邊的樹(shù)形窗口里面找到一個(gè)按鈕的位置,有點(diǎn)類(lèi)似Firebug找網(wǎng)頁(yè)控件
6.2 然后在下面的動(dòng)作框選擇你想要的動(dòng)作,點(diǎn)擊就是Tap,然后你會(huì)發(fā)現(xiàn)這個(gè)按鈕真的被點(diǎn)擊了(這是一個(gè)單步調(diào)試很直觀的例子)

7. 如何把錄制變成腳本
7.1 首先要點(diǎn)擊inspector窗口的Record按鈕
7.2 選擇你需要的編程語(yǔ)言
7.3 再繼續(xù)重復(fù)你需要做的UI操作
7.4 最后就是把代碼拷貝出去
8. 如何重錄測(cè)試
8.1 關(guān)掉inspector,
8.2 代碼需要稍微的修改,Python的代碼錄出來(lái)居然有語(yǔ)法錯(cuò)誤,這里給個(gè)例子,對(duì)照看就好了(當(dāng)然必要的python庫(kù)必須安裝)
from selenium.webdriver.firefox.webdriver import WebDriver from selenium.webdriver.common.action_chains import ActionChains import time import os import selenium success = True desired_caps = {} desired_caps['browserName'] = 'iOS' desired_caps['platform'] = 'Mac' desired_caps['version'] = '6.1' desired_caps['device'] = 'iPad' desired_caps['app'] = os.path.abspath('/Users/marshall/Library/Developer/Xcode/DerivedData/TestAutomation-empzzpwyyxctxidnwdsrtlssueqi/Build/Products/Debug-iphonesimulator/TestAutomation.app') wd = selenium.webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps) wd.implicitly_wait(60) def is_alert_present(wd): try: wd.switch_to_alert().text return True except: return False try: wd.find_element_by_name("First").click() wd.find_element_by_name("Second").click() finally: wd.quit() if not success: raise Exception("Test failed.") |
8.3 運(yùn)行代碼,查看測(cè)試結(jié)果
B. 如果是真機(jī)測(cè)試
真機(jī)測(cè)試其實(shí)遇到了些問(wèn)題,我大概說(shuō)一下我的步驟
1. 配置應(yīng)用的BundleID和設(shè)備的UDID
BundleID不知道怎么看的請(qǐng)用itools
UDID不知道怎么找的請(qǐng)用iTunes或itools
應(yīng)用必須是你自己的開(kāi)發(fā)者賬號(hào)簽名過(guò)的
2. Launch Appium
3. 點(diǎn)擊inspector的按鈕,接下來(lái)應(yīng)用會(huì)顯示在iPad上,但是過(guò)一會(huì)就會(huì)閃退(我試了好幾個(gè)應(yīng)用都有這個(gè)問(wèn)題),我已經(jīng)給Appium報(bào)告了一個(gè)bug,看看會(huì)不會(huì)有回復(fù)吧。
如果有人在真機(jī)上成功使用inspector的,也請(qǐng)留言分享一下
posted on 2014-05-08 16:42 順其自然EVO 閱讀(16021) 評(píng)論(1) 編輯 收藏 所屬分類(lèi): 測(cè)試學(xué)習(xí)專(zhuān)欄 、selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)