目錄
- 目前mobile自動(dòng)化解決方案
- appium介紹
- appium框架介紹
- appium環(huán)境安裝
- IOS配置
目前mobile自動(dòng)化解決方案
- 自動(dòng)化工具選擇
- 單平臺(tái)測(cè)試or 多平臺(tái)測(cè)試?
- 是否有多設(shè)備同時(shí)測(cè)試的場(chǎng)景?
- 不局限于測(cè)試環(huán)境,任何版本任何環(huán)境都可以測(cè)試?
- 最擅長(zhǎng)哪種開(kāi)發(fā)語(yǔ)言?
- 當(dāng)前市面是否有滿(mǎn)足項(xiàng)目需求的測(cè)試工具?
- 是否需要二次開(kāi)發(fā)?
Appium介紹
Appium是一個(gè)移動(dòng)端的自動(dòng)化測(cè)試框架拄显,可用于測(cè)試原生應(yīng)用苟径,移動(dòng)網(wǎng)頁(yè)應(yīng)用和混合應(yīng)用,且是跨平臺(tái)的躬审〖郑可用于iOS和Android操作系統(tǒng)。原生應(yīng)用是指用android或iOS編寫(xiě)的應(yīng)用﹐移動(dòng)網(wǎng)頁(yè)應(yīng)用是指網(wǎng)頁(yè)應(yīng)用承边,類(lèi)似于iOS中safarii應(yīng)用或者Chrome應(yīng)用或者類(lèi)似瀏覽器的應(yīng)用遭殉。混合應(yīng)用是指一種包裹webviiew的應(yīng)用博助,原生應(yīng)用網(wǎng)頁(yè)內(nèi)容交互性的應(yīng)用险污。
重要的是Appium是跨平臺(tái)的。何為跨平臺(tái)富岳,意思是可以針對(duì)不同平臺(tái)用一套api來(lái)編寫(xiě)腳本罗心。
- 推薦Appium
- 跨語(yǔ)言:Java、Python城瞎、nodejs等
- 跨平臺(tái)
- Andoid渤闷、iOS
- Windows、Mac
- 底層多引擎可切換
- 生態(tài)豐富脖镀,社區(qū)強(qiáng)大
Appium引擎列表
-
Android
- espresso飒箭、selendroid、uiautomator蜒灰、uiautomator2[推薦]
-
iOS
- uiautomation弦蹂、xcuitest[推薦]
mac
windows
-
IOS
- The XCUITest Driver
- (DEPRECATED)The UIAutomation Driver
-
Android
- (BETA) The Espresso Driver
- The UiAutomator2 Driver
- (DEPRECATED) The UiAutomator Driver
- (DEPRECATED) The Selendroid Driver
The Windows Driver (for Windows Desktop apps)
The Mac Driver (for Mac Desktop apps)
Appium設(shè)計(jì)理念
- webdriver是基于http協(xié)議的,第一連接會(huì)建立一個(gè)session會(huì)話(huà)强窖,并通過(guò)post發(fā)送一個(gè)json告知服務(wù)端相關(guān)測(cè)試信息
- Client /Server設(shè)計(jì)模式
- 客戶(hù)端通過(guò)WebDriver json wire協(xié)議與服務(wù)端通訊
- 多語(yǔ)言支持
- Server可以放在任何地方
- 服務(wù)端NODEJS開(kāi)發(fā)的HTTP服務(wù)
- appium 使用appium-xcuitest-driver來(lái)測(cè)試iPhone設(shè)備凸椿,其中需要安裝facebook出的WDA(webdriveragent)來(lái)驅(qū)動(dòng)iOS測(cè)試
Appium環(huán)境安裝
- appium生態(tài)工具
- adb: android的控制工具,用于獲取android的各種數(shù)據(jù)和控制
- Appium Desktop:內(nèi)嵌了appium server和inspector的綜合工具
- Appium Server: appium的核心工具翅溺,命令行工具
- Appium client:各種語(yǔ)言的客戶(hù)端封裝庫(kù)脑漫,用于連接appium server
- python髓抑、java、ruby优幸、robotframework-appium
- AppCrawler自動(dòng)遍歷工具
環(huán)境安裝
- Java 1.8版本
- Android sdk
- Node js(>=10版本)吨拍,npm(>=6版本)
- python3
- appium-desktop
- Appium python client
環(huán)境所需文件已存百度網(wǎng)盤(pán):
- 環(huán)境安裝需要的軟件下載地址:
鏈接: https://pan.baidu.com/s/1Tt69EFSnuM1aCOKWe0GO8Q
密碼: jlbg
- 需要安裝的apk:
鏈接: https://pan.baidu.com/s/1Zr-3Z1plg6fysvFpmxnk4A
密碼: gdcw
上面的軟件官網(wǎng)都可以下載到。
windows 版本 Appium 環(huán)境搭建
安裝 nodejs
- 下載.msi文件
https://nodejs.org/en/download/
- 注意:
1网杆、下載12.*版本雙擊安裝即可羹饰。
2、無(wú)須配置環(huán)境變量,直接重啟一個(gè) cmd 輸入下面的命令碳却,能夠查看這兩個(gè)版本號(hào)即安裝成功队秩。
安裝 appium desktop
直接官網(wǎng)下載 Appium 客戶(hù)端版本安裝即可。
建議下載 版本 1.15.1昼浦,最新的版本目前不太穩(wěn)定刹碾。
mac 下載:
Appium-mac-1.15.1.dmg
windows 下載:
Appium-windows-1.15.1.exe
- 官方下載地址:
https://github.com/appium/appium-desktop/tags
安裝命令行版本的 Appium
國(guó)內(nèi)網(wǎng)絡(luò)一般直接使用官方推薦的命令 npm install -g appium
, 會(huì)下載失敗座柱,超時(shí)等問(wèn)題迷帜。這里推薦大家設(shè)置國(guó)內(nèi)鏡像再下載。
1色洞、設(shè)置鏡像源
npm config set registry https://registry.npm.taobao.org
2戏锹、安裝appium
npm install -g appium
這樣下載下來(lái)的是最新版本的appium。
推薦下載 appium 1.15版本火诸,使用命令指定版本號(hào) npm install -g appium@1.15
appium 這個(gè)版本是命令行版本锦针, 與appium desktop啟動(dòng)一個(gè)即可,安裝也可以只安裝一個(gè)或者兩個(gè)都裝置蜀,建議都裝奈搜。
- 安裝 appium-doctor
npm install appium-doctor -g
appium-doctor 是用來(lái)檢測(cè)環(huán)境配的是否完整,安裝完成之后盯荤,重新打開(kāi)新的命令行窗口馋吗,輸入 appium-doctor
,如下圖:
例如上圖秋秤,還差 ANDROID_HOME沒(méi)有配會(huì)有標(biāo)為紅叉提示宏粤。
JDK 環(huán)境配置
注意: 使用 windows 的童鞋,如果用的是window10需要使用jdk_1XX的版本灼卢, 最上面網(wǎng)盤(pán)里面提供的绍哎,打開(kāi)應(yīng)該會(huì)閃退。
若下載比較慢鞋真,可以采取其他的方式進(jìn)行下載崇堰。
1、下載好之后進(jìn)行安裝,其中win版本的安裝的時(shí)候需要注意jre的安裝是在jdk安裝之后海诲,在進(jìn)行jre安裝的時(shí)候不要使用jdk同樣的目錄繁莹,否則會(huì)出現(xiàn)javac等的覆蓋
2、安裝好之后饿肺,檢查并進(jìn)行 java 環(huán)境的設(shè)置
-
a、設(shè)置好JAVA_HOME和CLASSPATH
JAVA_HOME:jdk的安裝目錄
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點(diǎn))
b盾似、設(shè)置Path敬辣,在其中加入兩個(gè)配置信息
安裝 android sdk
這里有兩種安裝方式,一種是命令行下載零院,一種是通過(guò) Android Studio 下載SDK
如果安裝的SDK有問(wèn)題溉跃,可以嘗試用另一種方式安裝。
第一種方式:命令行安裝
- 下載android sdk
https://www.androiddevtools.cn/
下載:android-sdk_r24.4.1-windows
下載下來(lái)之后找到 readme 文件并打開(kāi)告抄,下圖
找到這個(gè)文件中最下方的一條命令撰茎,如下圖,在命令行里執(zhí)行這個(gè)命令更新sdk:
更新完的sdk 會(huì)多了一些文件夾打洼,如下圖:
更新完成之后龄糊,檢查一下 build-tools/ 路徑下,如果是 30 的版本募疮,需要先刪掉這個(gè)30的文件夾炫惩,然后手動(dòng)的下載一個(gè)低于 28版本的build-tools/ 的放在目錄下即可(推薦 28或者29的版本),如果下載多個(gè)版本會(huì)優(yōu)先使用高版本的阿浓。(注意一定要?jiǎng)h掉30這個(gè)版本的他嚷,版本太高appium運(yùn)行不起來(lái),需要依賴(lài)java1.9的版本)
- 下載 build-tools 方法
命令行芭毙,cd 到sdk 目錄下筋蓖,輸入android 回車(chē), 彈出如下界面退敦,勾選想要下載的版本即可粘咖。
最后,檢查對(duì)應(yīng)的目錄信息應(yīng)該包含了以下幾個(gè):
build-tools
platform-tools
tools
如果出現(xiàn)了工具的缺失侈百,可以去上面的sdk manager 里下載涂炎。其中,build-tools包含不同版本的安卓版本的工具设哗,每個(gè)版本一個(gè)文件夾唱捣,配置的時(shí)候?qū)姹咎?hào)文件夾配置上類(lèi)似于:build-tools/xxx;platform-tools存放著adb等工具的网梢,tools存放著uiautomatorviewer等工具震缭。這里要注意build-tools/下的版本不要使用>=30版本的 build-tools/-
sdk 配置環(huán)境變量:
注意:環(huán)境變量不要有空格,中文 或者特殊字符等战虏。
首先配置好 android_home:
再到Path中添加下列信息拣宰,其中安卓版本build-tools目錄下的數(shù)字配置為自己電腦上存在的版本党涕。
第二種方式:先下載Android Studio, 利用 Android Studio 下載安裝 SDK
參考貼子:https://ceshiren.com/t/topic/4001
注意: sdk 無(wú)論使用哪種安裝方式巡社,最后都要配置環(huán)境變量ANDROID_HOME, 和 Path 膛堤。
.net framework 安裝
windows 安裝 appium desktop 需要依賴(lài) .net framework
必須保證 版本是大于 4.0 的即可。現(xiàn)在目前windows大部分默認(rèn)的 .net framework
版本都是大于 4.0 的晌该,可以通過(guò)下面的方式查看一下肥荔,如果不是則需要手動(dòng)安裝。
控制面板–程序–程序和功能 勾選 .net framework 4 確定即可
mac OS / Linux 忽略這一步朝群。
安裝 appium client
appium client 是我們編寫(xiě)腳本必調(diào)的api包燕耿,寫(xiě)腳本一定要安裝這個(gè)包才能引用appium, from appium import webdriver
這行代碼姜胖。
由于是python的第三方庫(kù)誉帅,直接使用Pip 安裝即可:
pip install appium-python-client
安裝模擬器
目前市面上模擬器類(lèi)型比較多, mumu右莱, 夜神蚜锨,雷電,逍遙慢蜓,genimotion踏志,android sdk中也有自帶的emulator模擬器。學(xué)習(xí)過(guò)程中推薦大家使用mumu模擬器胀瞪,也可以使用 genimotion模擬器和 android sdk 自帶的 emulator针余。
- 安裝mumu模擬器,練習(xí)足夠用凄诞,但做移動(dòng)端的 web 測(cè)試需要使用genimotion 或者 sdk自帶的emulator
- android sdk 里面自帶的模擬器也可以圆雁,只不過(guò)要下載android的開(kāi)發(fā)工具來(lái)管理這些模擬器 - android studio,不用也可以不裝帆谍,
- genimotion (自行百度)
模擬器安裝好之后伪朽,命令行里直接 輸入命令adb devices
即可查看模擬器的狀態(tài)。
對(duì)于第三方模擬器(mumu汛蝙, 夜神等)烈涮,windows需要手動(dòng)連接。
mumu模擬器窖剑,需要手動(dòng)輸入下面的連接命令:
adb connect 127.0.0.1:7555
上面的 127.0.0.1:7555
作為一個(gè)整體坚洽,是 模擬器的名稱(chēng),也叫序列號(hào)(serial number)西土。是根據(jù)本地的 IP 和端口號(hào)生成的讶舰, 不同的模擬器對(duì)應(yīng)的端口不一樣,具體用的哪個(gè)端口可以去百度搜索一下或者官網(wǎng)查看 。
mac上直接執(zhí)行 adb devices
跳昼。如果沒(méi)有識(shí)別般甲,需要重啟 adb server,執(zhí)行下面兩條命令即可鹅颊。
adb kill-server
adb devices
不同廠(chǎng)商的模擬器需要連接的名是不一樣的敷存,需要查看官網(wǎng)說(shuō)明。上面僅提供了mumu的連接方式堪伍,其它的模擬器自行百度锚烦。
mac 上 Appium 環(huán)境搭建
安裝 nodejs 與 npm
- 安裝方式與 windows 類(lèi)似 ,官網(wǎng)下載對(duì)應(yīng)的 mac 版本的安裝包杠娱,雙擊即可安裝挽牢,無(wú)須配置環(huán)境變量谱煤。
- 官方下載地址:
https://nodejs.org/en/download/
安裝 appium
Appium 分為兩個(gè)版本摊求,一個(gè)是有界面的Appium(下載安裝文件即可安裝),一個(gè)是無(wú)界面的命令行版本(需要命令安裝)刘离,建議都安裝上室叉。
- 有界面的Appium Desktop:包含 appium 服務(wù),錄制工具硫惕,查看頁(yè)面布局及查找元素的功能。
- 無(wú)界面的Appium:只提供了appium服務(wù)功能
方法一: 官方推薦直接,(網(wǎng)絡(luò)環(huán)境要求高,如果出現(xiàn)超時(shí)廊遍,下載不下來(lái)植捎,不推薦)
npm install -g appium
方法二:先安裝cnpm 再安裝 appium (曲線(xiàn)救國(guó),推薦)豁辉,一定要加上 -g
參數(shù)
npm install -g cnpm --registry=https://registry.npm.taobao.org
#掛載淘寶源
cnpm install -g appium@1.15
#全局安裝appium
3令野、安裝 appium-doctor,檢查你的appium環(huán)境是否安裝成功
cnpm install -g appium-doctor
安裝完成徽级,可以打開(kāi)一個(gè)新的命令行窗口(windows上cmd气破,Mac 上是Terminal),輸入 appium-doctor
餐抢,會(huì)出現(xiàn)如下提示现使,紅框里面沒(méi)有報(bào)錯(cuò)即可, 其它的畫(huà)叉的暫時(shí)可以不用安裝旷痕。
4碳锈、運(yùn)行 appium server
有界面的,打開(kāi)界面欺抗,點(diǎn)擊 Start Server
, 不報(bào)錯(cuò)說(shuō)明成功殴胧,如下圖:
打開(kāi)terminal,輸入 appium
回車(chē),不報(bào)錯(cuò)說(shuō)明安裝成功。
運(yùn)行团滥,驗(yàn)證環(huán)境
上面安裝完成就可以運(yùn)行一個(gè)簡(jiǎn)單的appium demo 腳本竿屹,能夠啟動(dòng)起來(lái)應(yīng)用說(shuō)明安裝成功。
創(chuàng)建測(cè)試文件 test_demo.py
from appium import webdriver
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='6.0'
desired_caps['deviceName']='emulator-5554'
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='com.android.settings.Settings'
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
IOS配置
環(huán)境搭建
- xcode
依賴(lài)工具包
brew install --HEAD ideviceinstaller
brew install --HEAD libimobiledevice
brew install ios-deploy
brew install carthage
github項(xiàng)目
WDA 本身是一個(gè)基于webdriver協(xié)議的框架
Appium 是用WDA作為底層的IOS自動(dòng)化框架
xocode相關(guān)
bundle identifier:類(lèi)似于android的包名灸姊,如果本地調(diào)試可以隨便填寫(xiě)拱燃,如果要發(fā)布則不能隨便填寫(xiě)。
signing:簽名需要證書(shū)才能構(gòu)建編譯力惯,在模擬器和真機(jī)上運(yùn)行碗誉。
.app文件:項(xiàng)目編譯后生成的項(xiàng)目打包代碼,其實(shí)是一個(gè)目錄父晶,zip文件
.ipa文件:經(jīng)過(guò)簽名后的打包文件哮缺,本質(zhì)是一個(gè)zip文件
基本操作
查看模擬器列表:
instruments -s devices
查看真機(jī)列表:
idevice_id -l
安裝APP:
ideviceinstaller -i demo.app
高版本使用:ios-deploy
查看app的bundleid:
ideviceinstaller -l
命令行編譯
xcodebuild -scheme UICatalog -target iOS clean build
xcodebuild -scheme UICatalog -target iOS archive
-
證書(shū)相關(guān)
team id:注冊(cè)成為開(kāi)發(fā)者,付費(fèi)后才有甲喝;真機(jī)測(cè)試需要尝苇,模擬器不需要(如果只是需要一個(gè)證書(shū),用自己的appid登錄即可)
ios模擬器測(cè)試
- Capabilitie參數(shù)
{
"platformName": "ios",
"app": "/Users/jaxon/Library/Developer/Xcode/DerivedData/UIKitCatalog-batnzjgnhedojmafwlejnamdeeup/Build/Products/Debug-iphonesimulator/UIKitCatalog.app",
"automationName": "XCUITest",
"deviceName": "iPhone 11 Pro",
"platformVersion": "13.3"
}
app: xcode選擇模擬器編譯后的app位置
[遇到的問(wèn)題
編譯WDA報(bào)錯(cuò):RoutingHTTPServer/RouteResponse.h’ file not found
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
埠胖,執(zhí)行
sh ./Scripts/bootstrap.sh
然后在wda項(xiàng)目路徑下執(zhí)行
sh ./Scripts/bootstrap.sh
ios真機(jī)測(cè)試
- Capabilitie參數(shù)
{
"platformName": "ios",
"app": "/Users/jaxon/Library/Developer/Xcode/DerivedData/UIKitCatalog-batnzjgnhedojmafwlejnamdeeup/Build/Products/Debug-iphoneos/UIKitCatalog.app",
"automationName": "XCUITest",
"deviceName": "iPhone",
"udid": "auto",
"xcodeOrgId": "7******S",
"xcodeSigningId": "iPhone Developer"
}
app: xcode選擇真機(jī)編譯后的app位置
xcodeOrgId:Team ID
udid:auto會(huì)根據(jù)deviceName返回的參數(shù)自動(dòng)獲取udid
注意:編譯成功后需要在手機(jī)里信任證書(shū)
WDA項(xiàng)目配置(自行下載的WDA):
- 選擇WebDriverAgentLib糠溜,設(shè)置對(duì)應(yīng)的team、certificate
- 選擇com.facebook.WebDriverAgentRunner直撤,設(shè)置對(duì)應(yīng)的team非竿、certificate
- com.facebook.IntegrationApp,設(shè)置對(duì)應(yīng)的team谋竖、certificate
ps:設(shè)置過(guò)程中可能會(huì)報(bào)錯(cuò)Failed to register bundle identifier.
解決辦法:因bundle identifier不是唯一的红柱,修改為唯一的即可
-
選擇WDA-真機(jī),進(jìn)行build
appium-WDA項(xiàng)目配置(appium自帶的WDA):
-
選擇WebDriverAgentLib蓖乘,設(shè)置對(duì)應(yīng)的team锤悄、certificate
- com.facebook.IntegrationApp,設(shè)置對(duì)應(yīng)的team驱敲、certificate
-
com.facebook.IntegrationApp铁蹈,設(shè)置對(duì)應(yīng)的team、certificate
-
選擇WDA-真機(jī)众眨,進(jìn)行build
注意:需對(duì)證書(shū)進(jìn)行信任
構(gòu)建完成后握牧,點(diǎn)擊product-test,在真機(jī)上安裝WDA娩梨,啟動(dòng)appium即可
遇到的問(wèn)題
根據(jù)Appium日志內(nèi)關(guān)鍵詞 xcodebuild build-for-testing test-without-building -project
查找appium自帶的WDA路徑沿腰,打開(kāi)后檢查對(duì)應(yīng)的team、certificate狈定,正確配置完成后颂龙,重新編譯习蓬,安裝即可