自動化一直是測試圈中的熱聊,也是你們追求的技術方向。在測試中,每每回歸測試也是測試人員的「痛點」。對於迭代慢、變動少的功能,就能用上自動化來替代人工迴歸,減輕工做量。javascript
在分享環境搭建以前,先拋出個人一個疑問吧。html
app啓用時,分不一樣的場景:java
1.首次安裝啓用,有歡迎頁;node
2.非首次啓用,直接進入到登陸頁;python
3.配置了推薦展現時,啓用app,會先展現推薦內容,才進入到登陸頁。android
不一樣場景對應的activity都是不一樣的,我目前處理辦法是,寫了個輸入函數,加了個if判斷去對應不一樣的activity,總以爲不智能,看此篇的博友們,可否給建議解惑一下。謝謝。ios
說了這麼多,該進入正題了。Appium環境搭建,須要安裝的軟件仍是有好幾個,一個安裝失敗,就可能致使整個環境搭建失敗。先羅列下須要用到的軟件,以下:web
1.jdk-8u221-window(下載對應版本) 2.Android-sdk_r24.4.1-windows(下載最新版) 3.Python 4.appium 5.Node.js 6.Appium-python-Client 7.pycharm
jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.htmlchrome
JDK一鍵安裝,無需多講,默認安裝路徑便可json
環境配置:計算機>屬性>高級屬性>環境變量
變量名:JAVA_HOME
變量值:D:\Java\jdk1.8.0_73(這裏是jdk安裝路徑)
變量名:path
變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(使得系統能夠在任何路徑下識別java命令)
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(這裏須要注意的是.不能漏)Java運行環境加載類的路徑
環境配置是否成功,輸入javac或者java -version驗證,出現以下界面表示成功
Android SDK提供開發測試所必須的Android API類庫和開發工具
sdk下載地址:https://www.androiddevtools.cn/
咱們須要下載的是SDK Tools
安裝方式:
將下載的zip包解壓,直接安裝便可。
打開SDK Manager(首次自動彈出),按照默認勾選安裝亦可。 主要安裝工具Platform-tools、build-tools、Android API(選擇最新版本便可),還有擴展插件Google USB Driver,其餘根據實際狀況自行選擇。以下圖:
下載安裝時,走的是外網,若是以爲下載速度太慢,能夠配置國內鏡像進行加速。
更改鏡像地址Tools -> Options
大連東軟信息學院鏡像服務器地址: http://mirrors.neusoft.edu.cn 端口:80 北京化工大學鏡像服務器地址: IPv4: http://ubuntu.buct.edu.cn/ 端口:80 IPv4: http://ubuntu.buct.cn/ 端口:80 IPv6: http://ubuntu.buct6.edu.cn/ 端口:80 上海GDG鏡像服務器地址: http://sdk.gdgshanghai.com 端口:8000 中國科學院開源協會鏡像站地址: IPV4/IPV6: http://mirrors.opencas.cn 端口:80 IPV4/IPV6: http://mirrors.opencas.org 端口:80 IPV4/IPV6: http://mirrors.opencas.ac.cn 端口:80
下載過程當中,能夠去喝杯茶,看看網頁,須要一小會喲
喝杯茶的功夫,sdk所需的工具類是下載成功了,接下來就是要配置環境變量了。
環境變量配置 1.ANDROID_HOME:D:\Android\android-sdk 本身實際安裝路徑 2.Path已有變量追加值:
%ANDROID_HOME%\tools;%ADNROID_HOME%\platform-tools;%ADNROID_HOME%\build-tools\28.0.3\; 本身具體版本號
使用adb命令驗證便可,在dos窗口輸入adb,出現以下截圖,說明安裝成功
python的安裝方式就略過了,也只是一路下一步便可,無須贅述。
Appium是一個開源、跨平臺的測試框架,能夠用來測試原生及混合的移動端應用。Appium支持IOS、Android及FirefoxOS平臺。Appium使用WebDriver的json wire協議,來驅動Apple系統的UIAutomation庫、Android系統的UIAutomator框架。Appium對IOS系統的支持得益於Dan Cuellar’s對於IOS自動化的研究。Appium也集成了Selendroid,來支持老android版本。
Appium支持Selenium WebDriver支持的全部語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可使用Selenium WebDriver的Api。Appium支持任何一種測試框架。若是隻使用Apple的UIAutomation,咱們只能用javascript來編寫測試用例,並且只能用Instruction來運行測試用例。一樣,若是隻使用Google的UIAutomation,咱們就只能用java來編寫測試用例。Appium實現了真正的跨平臺自動化測試。
在Android端,appium基於WebDriver協議,利用Bootstrap.jar,最後經過調⽤用UiAutomator的命令,實現App的自動化測試。UiAutomator測試框架是Android SDK自帶的App UI自動化測試Java庫。
另外因爲UiAutomator對H5的支持有限,appium引入了chromedriver以及safaridriver等來實現基於H5的自動化。
①client端也就是咱們的webdriver測試腳本;
②中間起的是Appium服務,Appium在服務端起了一個Server(端口:4723)。跟selenium Webdriver測試框架相似,Appium⽀持標準的WebDriver JSONWireProtocol。在這裏提供它提供了一套REST的接口,Appium Server接收web driver client標準rest請求,解析請求內容,調⽤對應的框架響應操做;
③appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上.Bootstrap監聽4724端口並接收appium 的命令,最終經過調⽤用UiAutomator的命令來實現;
④Bootstrap將執行的結果返回給appium server;
⑤appium server最後將結果返回給 appium client。
在IOS端,appium一樣使⽤WebDriver的一套協議。與Android端測試框架不一樣的是,appium ios封裝了apple的 Instruments框架,主要用了Instrument裏的UI Automation(Apple的⾃自動化測試框架),而後在設備中注⼊入bootstrap.js進⾏行監聽。
①client端依然是咱們的webdriver測試腳本;
②中間起的是Appium服務,Appium在服務端起了一個Server(端口:4723)。跟selenium Webdriver測試框架相似,Appium⽀持標準的WebDriver JSONWireProtocol。在這裏提供它提供了一套REST的接口,Appium Server接收web driver client標準rest請求,解析請求內容,調⽤對應的框架響應操做;
③appium server調用instruments.js 啓動一個socket server,同時分出一個子進程運⾏instruments.app,將bootstrap.js(一個UIAutomation腳本)注入到device⽤於和外界進行交互;
④Bootstrap.js將執行的結果返回給appium server;
⑤appium server最後將結果返回給 appium client。
因此咱們能夠看到android與ios區別在於appium 將請求轉發到bootstrap.js或者bootstrap.jar,而後由bootstrap 驅動UIAutomation和UiAutomator去devices上完成具體的動做。
更多詳細可參見這篇博文:http://www.javashuo.com/article/p-gsevyagf-cn.html
Appium下載地址:https://bitbucket.org/appium/appium.app/downloads/
將下載的zip包解壓後安裝,安裝很簡單,按提示操做便可。
path環境變量:追加環境變量 C:\Program Files (x86)\Appium\node_modules\.bin; 具體安裝路徑
輸入命令appium-doctor查看,出現以下截圖,說明安裝成功
配置Appium的環境,必需要有Node.js(Appium就是由Node.js編寫的),因此須要對Node.js進行安裝和配置環境。
下載地址:http://nodejs.cn/download/
下載對應的版本,以下所示
下載安裝包後,雙擊安裝,具體步驟忽略了,很簡單。
加path環境變量:C:\Program Files\nodejs\ node安裝路徑
經過命令node -v查看node版本,出現以下截圖,說明安裝成功
Appium的實用方法都在Client的源碼裏,對於driver和webelement實例,均有對應的元素查找方法(webelement查找的是下面的子元素),有些兒專門針對手機的函數,則須要在這個Client安裝後方可以使用。
Appium爲了實現本身的find查找方式,首先自定義了一個MobileBy類,給這個類對象塞入了它定義的一些擴展屬性,這些屬性的值會經過webdriver協議推送到server端去識別和執行,爲了讓這些屬性運用到find方法中,appium很好地繼承和擴展了webdriver.Remote,而後經過調用driver實例的find_element和find_elements兩個核心方法實現元素查找。因此,既然是擴展,appiumdriver實例可使用seleniumdriver的全部關於元素查找的實例方法。
使得appium和python創建鏈接關係,使用命令:pip install Appium-Python-Client,出現以下截圖,則說明安裝成功。
工具安裝也忽略了,安裝很簡單的。
通過如上七個步驟的操做,基於Python的Appium環境搭建就成功了。雖然說成功了,但也僅僅是個開端而已,想要作好自動化,仍是須要靜下心來,研習一番。今天的環境搭建就介紹到這了,下次帶來genymotion及腳本的分享。有描述錯誤的地方,歡迎批評指正。
本文僅表明做者觀點,系做者@溫一壺清酒發表。
歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
文章出處:http://www.cnblogs.com/hong-fithing/