第一章 導言
1.1 編制目的
該文檔為選用Appium作為移動設備原生(Native)、混合(Hybrid)、移動Web(Mobile Web)應用UI自動化測試的相關自動化測試人員、開發(fā)人員等提供參考。
1.2 預期讀者
自動化測試人員、測試代表、開發(fā)人員等。
第二章 概述
2.1 Appium設計哲學
不需要為了自動化而且重新編譯或修改測試app;
不應該讓移動端自動化測試限定在某種語言和某個具體的框架;也就是說任何人都可以使用自己最熟悉最順手的語言以及框架來做移動端自動化測試;
不要為了移動端的自動化測試而重新發(fā)明輪子,重新寫一套驚天動地的api;也就是說webdriver協(xié)議里的api已經夠好了,拿來改進一下就可以了;
移動端自動化測試應該是開源的;
2.2 Appium技術框架(C/S 框架)
Appium的核心是一個暴露了一系列REST API的Server。這個server的主要功能:監(jiān)聽一個端口,然后接收由client發(fā)送來的命令(command)。解析這些command,把這些command轉成移動設備可以理解的形式發(fā)送給移動設備,然后移動設備執(zhí)行完這些command后把執(zhí)行結果返回給server, server再把執(zhí)行結果返回給client。
client就是發(fā)起command的設備,一般來說就是我們代碼執(zhí)行的機器,執(zhí)行appium測試代碼的機器。狹義點理解,可以把client理解成是代碼,這些代碼可以是java/ruby/python/js的,只要它實現(xiàn)了webdriver標準協(xié)議就可以。
這樣的設計思想帶來了一些好處:
1)多語言的支持;
2)可把server放在任意機器上,支持云測試;
圖1 Appium架構
圖2 Appium Android模型
圖3 AppiumiOS模型
2.3 Appium Server/Client
Appium Server即服務器,連接Appium客戶端和移動設備。原生的webdriverapi為web端設計,因此擴展到移動端要拓展。Appium官方提供了一套appium client,涵蓋多種語言ruby/java/python等。
2.4 會話Session
在webdriver/appium,所有測試都必須在Appium Server和移動設備之間創(chuàng)建會話(Session)后才可以進行。一般來說,通過POST/session這個URL,然后傳入會話屬性(Desired Capabilities)就可以開啟會話了。開啟會話后,會返回一個全局唯一的會話ID(session id),之后幾乎所有的請求都基于該會話ID,該會話ID代表了你所打開的瀏覽器或者是移動設備的模擬器,連接執(zhí)行機器和移動設備。由于每個移動設備的連接會話ID是全局唯一的,那么在同一臺機器上啟動多個會話就變成了可能,這使多移動設備的并發(fā)測試成為可能。
會話屬性(Desired Capabilities)包含會話配置信息,以key-value形式存在,可以理解成是java里的map,python里的字典,ruby里的hash以及javascript里的json對象(實際上,Appium Server和移動設備之間的會話屬性就是通過json對象傳輸)
第三章 Appium安裝
Appium Windows版僅支持Android設備(手機),Appium Mac版同時支持Android和iOS設備(手機)。
3.1 Windows版安裝(64位)
3.1.1 軟件列表
1)JDK> 1.6
2)vcredist_x86_c++
3).Net Framework > 4.0
3)Android Developer Tools(ADT-Bundle-windows-x86-64)
4)Appium for windows(最新版1.4.16.1)
5) Appium client(根據(jù)使用的語言安裝一種即可:Java/Python/Ruby等),對于Java客戶端,還需要Selenium包selenium-java-2.46.0.jar , selenium-server-standalone-2.46.0.jar,python的是Appium-python-client(就是一個python類庫)
6)Android手機驅動(for windows),windows必須安裝任意一個Android手機驅動,否則,adb無法檢測無設備。
3.1.2 安裝過程
按照JDK、vcredist_x86_c++、.NET Framework、Appium的順序安裝好各軟件,ADT直接下載就可以用無需安裝
1)JDK安裝:設置系統(tǒng)環(huán)境變量JAVA_HOME為JDK安裝路徑:(Java安裝和環(huán)境變量配置,自行百度)
2)vcredist_x86_c++安裝:百度下載vcredist_x86_c++.exe文件,雙擊安裝即可。
3).NET Framework安裝:百度一個大于4.0版本的.NET Framework.exe文件。雙擊安裝即可。
4)Appium服務端安裝:下一個Appium for windows 1.4.16版本,雙擊安裝即可。(注:Appium分為客服端和服務端,服務端就是Appium工具,又可以分為GUI版本和終端版本。GUI版本是可視化的圖像界面工具,終端版本是在終端啟動的一個服務而已。客服端就是針對python、java、ruby等語言開發(fā)的類庫)
5)ADB安裝:ADB是ADT的一個工具,所以,在要下一個ADT的安裝包(免安裝的)解壓即可。然后,設置系統(tǒng)環(huán)境變量ANDROID_HOME為ADT所在目錄(比如D:\Mobile-AutoTest-Software\adt-bundle-windows-x86_64-20130917\sdk),同時把并把ADT里的tools和platform-tools兩個目錄加入到系統(tǒng)的 Path路徑里:注意:adb需要安裝adb驅動,一般手機驅動自帶adb驅動,所以只要安裝一個手機驅動即可
adb安裝成功后在終端輸入adb devices會彈出PC端連接的設備的udid
6)python安裝:下一個python2.7的安裝包,雙擊安裝即可。如果需要通過python安裝相關的python類庫,還要安裝pypa-setuptools、pip等工具。
6)Appium客服端安裝:安裝Appium Client(客戶端只需安裝一個,比如Python的或者Java的)這里以python為例:
1、需首先安裝Python、pypa-setuptools、pip等Python環(huán)境(安裝過程自行百度),然后通過pip在線(PC需聯(lián)網)安裝Selenium及Python客戶端(cmd下切換到Python安裝目錄C:\Python27\Lib\site-packages\后執(zhí)行):
python pip install Selenium
python pip install Appium-Python-Client
2、設置環(huán)境變量,把Python的目錄加到系統(tǒng)的Path路徑里
小提示:
安裝Appium-Python-Client客戶端時有時會遇到setuptools版本問題,運行python pip install –upgrade setuptools升級后再安裝:
如果機器沒聯(lián)網,下載Selenium和Appium-Python-Client,并解壓把整個目錄放到Python安裝目錄(一般是C:\Python27\Lib\site-packages 目錄下),如下圖(selenium-2.53.1目錄下py目錄的selenium目錄拷貝到上面的site-packages目錄)
Java客戶端可直接下載Jar包(比如java-client-3.2.0.jar),在Java工程中添加Jar即可。
其他客戶端安裝【略】
按照如上步驟安裝好各軟件后,基本環(huán)境就算完成了。啟動Appum,填寫被測APP路徑,Platform選Android,Automation Name選Appium,PlatformVersion根據(jù)手機的Android版本選擇,DeviceName選擇上面adb命令識別的手機udid號;Server地址和端口保持默認:
配置上面兩項內容后,點擊啟動按鈕,看到最后一行信息及表示啟動成功:
3.2 Mac版安裝
3.2.1 軟件列表
Mac Pro (OS X 10.10.3)
JDK > 1.6
Appium for Mac(最新版Appium-1.4.13.dmg)
Xcode 7.X
Appium Client(Python、Java等),對于Java客戶端,還需要Selenium包selenium-java-2.46.0.jar , selenium -server-standalone-2.46.0.jar
3.2.2 Appium安裝過程
安裝brew :終端輸入ruby –e "$(curl –fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝node.js:到官網http://nodejs.org下載Mac的pkg安裝包,下載完成直接安裝即可無需配置任何參數(shù)。在終端輸入node –version 如有版本號出來這說明成功。(也可以通過brew、來安裝:brew install node)
獲取權限:sudo chmod –R 777 /usr/local/
安裝ideviceinstaller:brew update ,brew install ideviceinstaller
安裝Appium服務端:npm install –g appium@1.4.16,npm install wd(還有問題就看這篇文章:www.15yan.com/story/4GbuTwXQKDU/)
安裝pip:sudo easy_install pip就行。
安裝appium python client和selenium(客服端):pip install Appium-Python-Client,pip install selenium
過程和Windows基本一致,JDK安裝過程自行百度,python咋Mac和Linux環(huán)境下是自帶的無須安裝。環(huán)境變量JAVE_HOME和ANDROID_HOME設置,并把ADT里的platform-tools和tools加到系統(tǒng)目錄:
最后,啟動Appium-doctor檢查環(huán)境配置,全部打勾說明環(huán)境搭建完畢:
3.2.3 針對iOS10升級appium到1.6.3解決方案
由于iOS10放棄了uiautomator,改用XCUITest來進行測試。appium1.6.0之前的版本全部采用uiautomator來進行自動化測試,基于這次iOS的調整,appium1.6.0之后的版本添加了WebDriverAgent依賴來應對這次iOS的調整。這里,我針對appium1.6.3的升級過程做描述。
安裝carthage,brew install carthage
安裝xcpretty,gem install xcpretty
在安裝好appium舊版情況下,卸載appium。npm uninstall –g appium.
安裝appium1.6.3,npm install –g appium。(這個過程會很難成功,但是,我們能做的就是不停嘗試,直到安裝成功為止。)
安裝WebDriverAgent,cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent(如果不在此目錄,自行查找)
mkdir –p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh –d(這步可能會報錯,去下一個vpn,開啟服務,再次下載就ok了,這里推薦“star vpn”很不錯的vpn)
cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent用xcode打開WebDriverAgent.xcodeproj。修改項目的Bundle identifier.要包Bundle identifier的Facebook改成其他東西。Signing,要選Automatically manage signing,開發(fā)者選自己的賬號或者用證書進行編譯,項目的所有bundle identifier都要該。改完后, build。
關閉xcode,在終端cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent。
xcodebuild –project WebDriverAgent.xcodeproj –scheme WebDriverAgentRunner –destination 'id=真機的udid' test.
如果運行結果報錯為“Test target WebDriverAgentRunnerencounted an error (Early unexpected exit,operationnever finished bootstrapping –no restart will be attempted)”則忽略不計。
到此升級工作完成,注意:在安裝WebDriverAgent到手機的時候必須保持手機連接外網。當然,在使用的過程中同樣要連接外網。(如果WedDriverAgent是用證書進行編譯的則在使用過程中不用連接外網)
由于,appium1.6.3為推出GUI版本,這里做元素定位的時候,我們用macaca進行定位,macaca安裝教程網上查詢。
app-inspector是macaca的元素定位工具,使用命令,在終端輸入:app-inspector –u "設備的udid"
3.3 Linux版安裝
3.3.1 軟件列表
Linux Ubuntu Destop 14.04以上版本
brew
ruby
git
curl
node
jdk
appium
Android sdk
Python Appium客戶端:Appium-Python-Client、Selenium
3.3.2 安裝過程
Appium Server 的安裝
【參考https://coderwall.com/p/rcvkrq/install-nodejs-using-homebrew-and-install-appium】
1. 刪除nodejs : sudo apt-get remove nodejs。但是默認的系統(tǒng)nodejs沒有,這一步可做可不做。
2. 安裝ruby:sudo apt-get install ruby
確認ruby 安裝成功:
ruby -v有ruby的版本信息。
3. 安裝git:sudo apt-get install git
4. 安裝brew:ruby -e "$(wget -O- https://raw.github.com/Homebrew/linuxbrew/go/install)"
如果上面執(zhí)行不成功的話可以用下面這句git clone https://github.com/Homebrew/linuxbrew.git ~/.linuxbrew
5. 安裝curl:sudo apt-get install curl
6. 安裝node.js:一定不能用sudo,直接普通用戶安裝(確認之前文件環(huán)境配置好后,如果安裝下載失敗多試幾次)
brew install node
如果上面執(zhí)行不成功的話就用這種方法:sudo apt-get install g++。
sudo apt-get install libssl-dev。
wget http://nodejs.org/dist/v5.6.0/node-v5.6.0.tar.gz。
tar zxvf node-v5.6.0.tar.gz。
./configure(注:這句話要切到node的bin目錄下執(zhí)行)。
make。
make install。
sudonpm install –g express-generator@4(全局模式安裝)。
可能會比較慢(本機安裝15分鐘左右),耐心等待nodejs安裝成功。
查看安裝完成
node -v
7. 安裝 Java 虛擬機
下載JDK,下載最新Java SDK
解壓安裝
我們把JDK安裝到這個路徑:/usr/lib/jvm
如果沒有這個目錄(第一次當然沒有),我們就新建一個目錄
1)cd /usr/lib
2)sudo mkdir jvm
建立好了以后,我們來到剛才下載好的壓縮包的目錄,解壓到我們剛才新建的文件夾里面去,并且修改好名字方便我們管理,(根據(jù)版本名自己修改名字)
1)sudo tar zxvf ./jdk-7-linux-i586.tar.gz -C /usr/lib/jvm
2)cd /usr/lib/jvm
3) sudo mv jdk1.7.0_05/ jdk7
配置JAVA環(huán)境變量
gedit ~/.bashrc
在打開的文件的末尾添加
export JAVA_HOME=/usr/lib/jvm/jdk7
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存退出,然后輸入下面的命令來使之生效
source ~/.bashrc
配置默認JDK
由于一些Linux的發(fā)行版中已經存在默認的JDK,如OpenJDK等。所以為了使得我們剛才安裝好的JDK版本能成為默認的JDK版本,我們還要進行下面的配置。
執(zhí)行下面的命令:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk7/bin/java 300
sudo update-alternatives --install /usr/bin/javacjavac /usr/lib/jvm/jdk7/bin/javac 300
注意:如果以上兩個命令出現(xiàn)找不到路徑問題,只要重啟一下計算機在重復上面兩行代碼就OK了。
執(zhí)行下面的代碼可以看到當前各種JDK版本和配置:
sudo update-alternatives --config java
測試
打開一個終端,輸入下面命令:
java -version
顯示結果(JDK1.8):
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b05)
Java HotSpot(TM) Server VM (build 23.1-b03, mixed mode)
這表示java命令已經可以運行了。
8. 安裝appium
全局安裝appium,本機安裝的是1.4.16版本(如果不加版本名會自動安裝最新版本),通過npm淘寶鏡像
通過config命令
npm config set registry https://registry.npm.taobao.org (這里是為下面一句服務的,即把appium的下載數(shù)據(jù)源指向淘寶庫)
npm install -g appium@1.4.16
如果安裝失敗就用root賬號進行安裝?安裝完之后,
cd /usr/local/lib
sudo chown –R 主機名字 node_modules
然后卸載:
npm uninstall appium –g
之后再普通用戶下啟動appium
可能會比較慢,耐心等待安裝成功,如果安裝失敗重復執(zhí)行安裝命令(如果之前有安裝過錯誤的版本,提示得刪除之前的文件,刪除之后在安裝)。
安裝成功會出現(xiàn)樹狀依賴關系圖
查看版本
appium -v
9. 下載安裝Android SDK Starter Package
Android SDK Starter Package這個只是SDK的核心基本工具,有了它,再利用它的管理工具下載其他你需要到部分??吹竭@個目錄中有個android腳本文件了嗎?執(zhí)行它,就會啟動Android SDK and AVD Manager,這個工具可以幫你下載其他你需要的部分,還可以創(chuàng)建模擬機。
下載地址是:http://developer.android.com/sdk/index.html,不過國內這個地址被墻掉了,你要想版本下載包了。
一般是下載最新版,我下載的:android-sdk_r21.1-linux.tgz。
wget http://dl.gmirror.org/android/android-sdk_r24.4.1-linux.tgz
接下來當然是解包了:tar zvxf android-sdk_r21.1-linux.tgz
解包完畢,就會在當前目錄下出現(xiàn)android-sdk-linux_x86目錄了。這個目錄下就是sdk的基本工具了。記住這個目錄,因為以后你運行工具或者設置ADT的時候,會需要這個目錄的!。
注意,需要安裝ia32-libs
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
配置 Android SDK
配置 Android 環(huán)境變量,將下面的變量添加到環(huán)境變量當中去(根據(jù)自己sdk存放的文件夾修改路徑,注意HOME就為當前用戶目錄下)
export ANDROID_HOME="$HOME/adt/sdk"
export PATH=${PATH}:~/adt/sdk/tools
export PATH=${PATH}:~/adt/sdk/platform-tools
第一章 導言
1.1 編制目的
該文檔為選用Appium作為移動設備原生(Native)、混合(Hybrid)、移動Web(Mobile Web)應用UI自動化測試的相關自動化測試人員、開發(fā)人員等提供參考。
1.2 預期讀者
自動化測試人員、測試代表、開發(fā)人員等。
http://www.cnblogs.com/baconLiu/p/6735441.html