移動端Appium環境部署比Web的selenium環境稍微複雜一些,如用python編寫測試用例腳本或者開發測試框架以及UI自動化操做方法是同樣的,基本是通用。因二者都是基於selenium,在Python的appium包中實際繼承了Selenium,在測試過程當中將移動端的頁面元素看成是網頁來處理。Web和Appium二者區別在於環境部署和腳本部分配置差別。若是對Web的selenium自動化腳本有基礎的話,只要環境搭建及配置搞明白能夠直接上手Appium移動端自動化測試。php
因爲網上的Appium部署的環境資料比較零散,不完整,本身把以住工做中使用到的知識梳理總結搭建的appium環境從0到1完整部署過程記錄。java
1、環境準備:node
本文講解的環境在windows7系統64位版本進行部署。python
須要安裝的工具清單以下:android
1.jdk1.8.0 (64位)ios
2.android-sdk_r24.4.1-windows (下載地址:http://tools.android-studio.org/index.php/sdk)git
3.python:3.6 (下載地址:https://www.python.org/)github
4..net framework4.5 (下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=30653)web
5.Node.js:node-v10.14.2-x64 (下載地址:https://nodejs.org/en/download)shell
6.appium-desktop :1.10.0 (下載地址:https://github.com/appium/appium-desktop/releases)
7.Appium-Python-Client:1.10.1
8.夜神摸擬器:6.2.6.3
2、安裝jdk
一、在系統環境變量,新增JAVA_HOME爲jdk安裝路徑:D:\Java\jdk1.8.0_181
二、在Path變量中增長:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
三、在CLASSPATH變量中增長:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
3、安裝android-sdk
將下載的 Android SDK 解壓指定的目錄
在系統變量新建:ANDROID_HOME,對應變量值爲:D:\android-sdk(sdk安裝路徑)
path變量裏面添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools;
注意:
因爲目前Google在國內沒法訪問,因此須要經過鏡像方式去下載咱們的SDK,就碰到android sdk解壓後沒有platform-tools目錄,或者安裝SDK時遇到"Done loading packages"的問題。
一、進入Android SDK安裝目錄中點擊SDK Manager.exe,而後選擇Tools->options菜單,彈出以下界面:
錄入以下數據:【本人親測該URL地址鏡像服務器可用】
Proxy Server:mirrors.neusoft.edu.cn
Proxy Port:80
並勾選Others框內的第一個複選框,如上圖紅色圈。
二、列出Android SDK在線更新鏡像服務器
三、完成代理設置後再次打開SDK Manager.exe,便可更新及安裝咱們的SDK了。
接下來勾選須要下載的android版本和工具,以下圖所示:
如上圖Tools的紅色圈內必需要勾選安裝,下載安裝完後,Status狀態下會出現Installed表示已安裝。
本文選擇的是android 6.0版本,如上圖。
Extras下Android Support Repository是android系統的兼容庫,必須安裝,Google USB Driver也安裝。
勾選完後,單擊右下角install package按鈕,安裝更新所有內容大概要2小時左右的時間,請耐心等待!
下圖是一位大神整理的SDK圖片描述很詳細,供參考,以下圖所示:
3、安裝python
本文選擇3.6版本安裝完後,進行環境變量配置,指定安裝路徑目錄便可。
在系統變量的path變量新增:D:\Programs\Python\Python36;D:\Programs\Python\Python36\Scripts
4、安裝.net framework4.5
安裝appium以前,先安裝.net framework4.5工具,不然安裝appium會報錯,直接傻瓜式安裝便可。
5、安裝Node.js
安裝appium以前,須要安裝Node工具,傻瓜式安裝完後,在cmd窗口錄入node -v查看版本號。
6、安裝appium-desktop
因爲AppiumForWindows一直沒更新版本,版本太低,對android系統高版本不支持。由appium-desktop替代。
安裝appium-desktop桌面版比較簡單,直接傻瓜式安裝便可,安裝完後桌面出現appium圖標,點擊打開以下圖:
以下命令行版本安裝:
一、安裝appium 【可安裝,也可不安裝,前面已安裝有appium-desktop桌面版】
npm --registry http://registry.npm.taobao.org install appium -g
驗證:cmd輸入appium
二、安裝appium-doctor檢測環境
npm --registry http://registry.npm.taobao.org install appium-doctor -g
驗證:cmd輸入appium-doctor
7、安裝Appium-Python-Client
直接在cmd窗口輸入pip3 install Appium-Python-Client安裝便可,這個工具是用來可以在客戶端編寫python腳本去實現操做android系統的APP測試。
8、安裝夜神摸擬器
直接傻瓜式安裝便可,安裝完後,能夠直接在夜神摸擬器自帶的夜神應用中心HD,搜索須要下載安裝APP軟件,或者也能夠網上下載的apk包文件直接拖到夜神摸擬器窗口就能夠實現自動安裝app軟件。以下圖所示:
到此爲止,全部的該要安裝工具都安裝完後,接下來就能夠配置,調試跑通起來。
一、鏈接夜神摸擬器前,先在cmd窗口檢測環境sdk和夜神摸擬器版本號是否一致性。不然會報錯以下信息:
adb server version(36) doesn’t match this client (40);killing…
nox_adb.exe connect 127.0.0.1:62001
如夜神版本比SDK的adb的版本號低的話,以下解決辦法:
a、關掉夜神模擬器。同時去任務管理器裏看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。
b、找到SDK的目錄和夜神模擬器的目錄,將夜神模擬器目錄下本來的adb.exe和nox_adb.exe修改文件名爲adb_bak.exe和nox_adb_bak.exe,將SDK目錄(D:\android-sdk\platform-tools)下的adb.exe文件複製到夜神模擬器的目錄(D:\Program Files\Nox\bin)下,將從SDK目錄複製過來的adb.exe放在夜神目錄下,同時複製一份更名爲nox_adb.exe。
最後在cmd窗口進入夜神安裝目錄下D:\Program Files\Nox\bin輸入命令:nox_adb.exe connect 127.0.0.1:62001後,查看鏈接信息以下:
如上圖表示已經成功鏈接到夜神摸擬器。
二、點擊電腦桌面appium圖標啓動,點擊Start Server按鈕啓動appium服務。以下圖所示:
點擊放大鏡按鈕進入appium配置數據以下圖所示:
在D:\android-sdk\build-tools\28.0.3目錄下的cmd窗口輸入aapt dump badging D:\test\taobao.apk命令後,能夠找到以下信息。
package: name='com.taobao.taobao'
launchable-activity: name='com.taobao.tao.welcom.Welcom'
查找appPackage和appActivity方法有好多種,選其中一個方法就好了。還可下載的查看包名的apk工具拖到夜神摸擬器窗口安裝後,可直接用查看包名工具來查看模擬器已安裝全部的APP包名清單,以下圖所示:
點擊appium界面的右下角「Start Session"打開以下界面,就能夠看到鏈接到夜神摸擬器啓動打開淘寶APP軟件主界面,就能夠定位元素控件寫測試腳本了。
如上圖appium自帶的可定位元素屬性,值。另外一種方法可用sdk自帶的工具D:\android-sdk\tools目錄下uiautomatorviewer.bat文件來定位元素,查看屬性,值。打開後彈以下界面:
三、接下來就能夠編寫測試腳本調試是否能跑通,以下圖所示:
方法一,使用appium工具定位元素:
方法二,使用SDK自帶的uiautomatorviewer工具定位元素以下圖所示,前提條件必須關閉appium,不然會報錯獲取不到當前摸擬器的圖像。
經過以上可知控件的元素,就能夠編寫測試腳本,以下圖所示:
須要先啓動appium服務,而後執行測試腳本,可經過夜神摸擬器查看當前自動化運行的淘寶APP界面操做測試。若是須要測試真機的話,將手機和電腦經過USB數據線鏈接,手機打開USB調試模式,USB的鏈接方式要選擇設備文件管理選項。
而後在cmd窗口輸入adb devices查看是否鏈接成功並獲取到驅動名。最後在測試腳本的驅動名稱改成當前真機驅動名稱,再執行測試腳本便可實如今真機跑。
本文介紹搭建IOS的摸擬器和真機的appium環境,部署過程當中各類報錯遇到很多坑,關鍵xcode和ios系統、appium版本三者要對應起來,不然安裝部署大多數是版本問題。若是在項目測試的話,最好在IOS系統電腦搭建IOS和android兩套環境,這樣一臺機子就搞定了,在IOS搭建的android跟windows方法差很少,這裏重點講搭建IOS的appium環境。
1、環境準備:
須要安裝的工具清單以下:
1.jdk11.0.2 (64位)
2.xcode:10.1 (下載對應的MACOS系統版本:https://developer.apple.com/download/more/)
3.python:3.6 (下載地址:https://www.python.org/)
4.macOS:10.14.3
5.Node.js:node-v10.15.1-x64 (下載地址:https://nodejs.org/en/download)
6.appium-desktop :1.8.2 (下載地址:https://github.com/appium/appium-desktop/releases)
7.Appium-Python-Client
先進入根目錄輸入vim ~/.bash_profile
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
export JAVA_HOME
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
從新引入生效:source ~/.bash_profile
查看更改後的JAVA_HOME路徑:echo $JAVA_HOME
brew是mac上一個軟件管理工具,經過它能夠在終端輸入命令安裝各類軟件包
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
檢查homebrew是否安裝:brew -v
$ git --version
git version 2.19.0
brew install carthage
驗證:carthage version,查看版本
brew install -HEAD libimobiledevice
驗證:將真機鏈接在mac上,命令行輸入idevice_id -l,若是出現該設備的udid,則說明配置成功可以正常識別了。
查看真機的設備名字:idevicename -d
查看全部的模擬器和真機:instruments -s devices
brew install ios-deploy
從App Store獲取xcode的工具並安裝
直接官網下載安裝
pip3 install Appium-Python-Client
npm install -g appium-doctor
使用appium-doctor 檢查Appium iOS環境環境:appium-doctor --ios
若是出現opencv4nodejs、fbsimctl、applesimutils、ffmpeg、ios-webkit-debug-proxy失敗信息,可經過以下手動安裝便可:
安裝ffmpeg
brew install ffmpeg
brew tap facebook/fb and brew install fbsimctl --HEAD
安裝ios-webkit-debug-proxy
brew install ios-webkit-debug-proxy
安裝opencv4nodejs:
使用npm代替brew:
brew install cmake
npm install -g opencv4nodejs
安裝fbsimctl:
brew tap facebook/fb
brew install fbsimctl
安裝applesimutil:
brew tap wix/brew
brew install applesimutil
2、Appium環境安裝:
安裝WebDriverAgent(WDA)
若是是模擬器測試,不須要安裝WDA,若是用真機必定要安裝WDA
前提:電腦必須安裝了Carthage
注意,因爲appium安裝目錄下自帶的WebDriverAgent有BUG問題,須要從網上下載最新版本執行腳本。
先進到用戶目錄下:
cd ~ git clone https://github.com/facebook/WebDriverAgent.git cd WebDriverAgent mkdir -p Resources/WebDriverAgent.bundle sh ./Scripts/bootstrap.sh
appium-xcuitest-driver
所在文件目錄下:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver下把自帶的WebDriverAgent目錄重命名爲WebDriverAgent_bak。
執行命令:ln -s ~/WebDriverAgent WebDriverAgent (其中~/WebDriverAgent是源地址,後面的是目標地址)
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
,雙擊
WebDriverAgent.xcodeproj
工程文件。
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
執行命令:xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真機的udid' test
若是終端出現如下信息,表示編譯 OK
Testing failed:
這個時候iphone多了一個WebDriverAgentRunner的app,以下圖所示:Early unexpected exit, operation never finished bootstrapping - no restart will be attempted ** TEST FAILED *
在手機通用-》描述文件設置信任證書,終端再從新執行xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真機的udid' test進行驗證環境。
驗證一下WDA是否運行成功,由於有些國產的iPhone設備經過手機的IP和端口還不能訪問,此時須要將手機的端口轉發到Mac上,終端輸入:iproxy 8100 8100控制檯切換到wda的文件夾目錄下,運行:WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=(你的id) USE_PORT=8100 test(id填你本身的uid)
執行:iproxy 8100 8100
控制檯運行:WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=A2C61397-E627-422E-87D3-8745C3E4F927 USE_PORT=8100 test(id填使用的模擬器uid)進行端口轉發。
瀏覽器輸入:http://localhost:8100/status,返回一串json即證實成功
真機命令行啓動wda:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/摸擬器的命令行啓動wda:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
到此爲止,真機環境搭建完成,接下來就是能夠配置appium信息,寫測試腳本跑自動化了。
4、安裝IOS摸擬器
打開已經安裝好的xcode(位於/Applactions/Xcode),如圖
![](http://static.javashuo.com/static/loading.gif)
選擇Create a new Xcode project,按下圖操做:
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
選擇摸擬器:
![](http://static.javashuo.com/static/loading.gif)
若是須要其它,還可點擊Add Additional Simulators下載摸擬器版本。
最後,點擊左側三角形運行,出現打開摸擬器,會多出test的app圖標,以下圖:
![](http://static.javashuo.com/static/loading.gif)
如查看udid方法以下圖左邊的Devices是查看真機,右邊的Simulators是查看摸擬器信息。還可經過命令instruments -s devices查看全部的真機和摸擬器。
![](http://static.javashuo.com/static/loading.gif)
備註:在真機上是安裝.ipa的包,在模擬器上是安裝.app的包。
這是兩種不一樣的打包方法,也就是說從appstore這種渠道下載的.ipa是沒法安裝到模擬器上的,必需要找大家開發專門針對iOS模擬器打個模擬器的包,後綴是.app 。
五、APPiumDesktop的環境真機和摸擬器參數配置
a、在真機上測試時,須要在AppiumDesktop新增udid、xcodeOrgld和xcodeSigningld等字段屬性。xcodeOrgld是指開發者帳號id,可在https://developer.apple.com/account的左側的Memeber ship找到,或者在xcode帳號管理裏。
以下圖參考:
b、摸擬器配置以下圖所示:
備註:如上圖真機和摸擬器已經有安裝好的被測app軟件,可把參數app屬性改成bundleId,此項至關於android的裏面的app包名。若是想看app的bundleId,只須要安裝了ideviceinstaller工具就能夠了,而後執行 ideviceinstaller -l 就能夠將手機安裝的app列出。Appium每次運行,不安裝APP,就在Capabilities增長參數屬性noReset設置爲True。
以下圖公用的Capability參數:
其它更多的參數參考請進入:https://blog.csdn.net/ljl6158999/article/details/80594521
六、APPium代碼啓動
參考以下圖啓動摸擬器執行用例腳本自動化測試示例代碼:
一、appium是基於webdriver 協議,appium ios封裝了apple的Instruments框架,用了裏面的UIAutomation,Client是咱們編寫的 webdriver腳本,中間是appium啓動server(默認監聽 4723 端口 ),appium server調用instruments.js啓動一個 socket server ,同時分出一個子進程運行instruments.app 將bootstrap.js(一個 UIAutomation 腳本)注入到 devices用於和外界進行交 ,最後 Bootstrap.js將執行的結果返回給appium server, appium server再將結果返回給appium client 。
二、appium使用的是UIAutomator框架,咱們在client客戶端編寫測試腳本運行,調用的是webdriver接口,appium server接收到咱們client發送過來的命令去調用UIAutomator,把命令轉換後去實現,Bootstrap將執行的結果返回給appium server ,最後由Appium server再將結果返回給client端。