在上一篇博客中,已經(jīng)將環(huán)境搭建好了。現(xiàn)在,我們利用搭建的環(huán)境來(lái)運(yùn)行一條測(cè)試腳本,腳本中啟動(dòng)一個(gè)計(jì)算器的應(yīng)用,并實(shí)現(xiàn)加法的運(yùn)算。
成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的10年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如成都小攪拌車(chē)等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致稱(chēng)贊。創(chuàng)建模擬器
在運(yùn)行App之前,首先需要?jiǎng)?chuàng)建一個(gè)Android模擬器,也可以使用真機(jī)來(lái)運(yùn)行,效果更佳。
進(jìn)到Android SDK的目錄,雙擊運(yùn)行AVD Manager.exe
點(diǎn)擊Create創(chuàng)建一個(gè)Android模擬器
輸入一個(gè)模擬器名稱(chēng),選擇設(shè)備類(lèi)型和API版本,點(diǎn)擊進(jìn)行創(chuàng)建。創(chuàng)建完成后會(huì)顯示當(dāng)前所有的設(shè)備,選擇設(shè)備,點(diǎn)擊Start啟動(dòng)
第一次啟動(dòng)的時(shí)候會(huì)有點(diǎn)慢,要等幾分鐘,啟動(dòng)以后就好了,模擬器剛啟動(dòng)后的界面是這樣的
獲取應(yīng)用的packageName和activityName
在寫(xiě)測(cè)試腳本之前,要知道被測(cè)試apk的packageName和要啟動(dòng)的activityName,如果是第三方的apk,有現(xiàn)成的可以直接使用。這里啟動(dòng)的是模擬器內(nèi)置的應(yīng)用,所以要把a(bǔ)pk從模擬器中導(dǎo)出來(lái)
模擬器中預(yù)置的應(yīng)用都放在手機(jī)的system/app目錄中,使用adb shell命令進(jìn)入目錄查看計(jì)算器應(yīng)用的apk名稱(chēng)
使用ls *.apk命令列出所有的apk,查找到apk文件為Calculator.apk,然后使用adb pull system/app/Calculator.apk d:/命令將文件導(dǎo)出到電腦中。
將apk導(dǎo)出后,Android SDK中有一個(gè)aapt的工具可以用來(lái)查看應(yīng)用的包名和要啟動(dòng)的activity名稱(chēng),工具在SDK的build-tools目錄下,命令格式為”aapt dump badging apk路徑”
輸入命令后,第一行的輸入中包含應(yīng)用的包名
package: name='com.android.calculator2' versionCode='17' versionName='4.2.2-3453820'
在輸入快到結(jié)尾的時(shí)候,有一行包含應(yīng)用啟動(dòng)時(shí)打開(kāi)的activity名稱(chēng)
launchable-activity: name='com.android.calculator2.Calculator' label=” icon='
這樣就得到了packageName和activityName
Capability
Capability是一個(gè)字典,配置的是自動(dòng)化測(cè)試的一些必要信息,包含了本次測(cè)試的平臺(tái)名稱(chēng)及版本號(hào)、啟動(dòng)的是瀏覽器還是app等,客戶端將這些告訴服務(wù)器,服務(wù)器根據(jù)這些信息創(chuàng)建自動(dòng)化會(huì)話。這里只介紹跟Android平臺(tái)相關(guān)并且常用的幾個(gè)
automationName:定義測(cè)試引擎,使用的android-sdk版本小于17時(shí),使用Selendroid,大于等于17時(shí)使用Appium,默認(rèn)是Appium
platformName:測(cè)試平臺(tái),通常用于移動(dòng)設(shè)備,值有:Android、IOS、FirefoxOS
platformVersion:測(cè)試平臺(tái)版本,根據(jù)設(shè)備的固件版本指定,例如Android的4.2、IOS的7.1
deviceName:設(shè)備名稱(chēng)
app:要安裝的app的文件路徑,可以是本地的絕對(duì)路徑,也可以是遠(yuǎn)程網(wǎng)絡(luò)路徑
browserName:?jiǎn)?dòng)的瀏覽器名稱(chēng),測(cè)試的是web應(yīng)用時(shí)指定,Android平臺(tái)設(shè)置為Chrome
newCommandTimeout:為了結(jié)束Appium會(huì)話,會(huì)設(shè)置一個(gè)等待從客戶端發(fā)送命令的超時(shí)時(shí)間,默認(rèn)為60秒,一般不需要設(shè)置
autoLaunch:測(cè)試時(shí)是否需要自動(dòng)運(yùn)行app
appPackage:設(shè)置app的包名,告訴Appium需要啟動(dòng)的app
appActivity:設(shè)置啟動(dòng)的Activity
appWaitActivity:要等待的Activity
appWaitPackage:要等待的appPackage
unicodeKeyboard:是否使用unicode鍵盤(pán)輸入,在輸入中文字符和unicode字符時(shí)設(shè)置為true
resetKeyboard:是否將鍵盤(pán)重置為初始狀態(tài),設(shè)置了unicodeKeyboard時(shí),在測(cè)試完成后,設(shè)置為true,將鍵盤(pán)重置
上述的幾個(gè)Capability只是在測(cè)試中經(jīng)常用到的,更多的Capability在用到的時(shí)候可以在網(wǎng)上查閱
編寫(xiě)測(cè)試腳本
新建test.py,輸入下面的代碼
# -*- coding: utf-8 -*- from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'platformVersion': '4.2', 'appPackage': 'com.android.calculator2', 'appActivity': 'com.android.calculator2.Calculator' } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) driver.find_element_by_name('7').click() driver.find_element_by_name('+').click() driver.find_element_by_name('8').click() driver.find_element_by_name('=').click()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。