自動化一直是測試圈中的熱聊,也是大家追求的技術方向。在測試中,往往回歸測試也是測試人員的“痛點”。對於迭代慢、變更少的功能,就能用上自動化來替代人工回歸,減輕工作量。
問題
在分享環境搭建之前,先拋出我的一個疑問吧。
app啟用時,分不同的場景:
1.首次安裝啟用,有歡迎頁;
2.非首次啟用,直接進入到登錄頁;
3.配置了推薦展示時,啟用app,會先展示推薦內容,才進入到登錄頁。
不同場景對應的activity都是不同的,我目前處理辦法是,寫了個輸入函數,加了個if判斷去對應不同的activity,總覺得不智能,看此篇的博友們,能否給建議解惑一下。謝謝。
說了這么多,該進入正題了。Appium環境搭建,需要安裝的軟件還是有好幾個,一個安裝失敗,就可能導致整個環境搭建失敗。先羅列下需要用到的軟件,如下:
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安裝
jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK一鍵安裝,無需多講,默認安裝路徑即可
環境配置:計算機>屬性>高級屬性>環境變量
變量名: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驗證,出現如下界面表示成功
二、sdk工具類安裝
Android SDK提供開發測試所必須的Android API類庫和開發工具
1.sdk下載
sdk下載地址:https://www.androiddevtools.cn/
我們需要下載的是SDK Tools
2.工具類安裝
安裝方式:
將下載的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
下載過程中,可以去喝杯茶,看看網頁,需要一小會喲
3.配置環境變量
喝杯茶的功夫,sdk所需的工具類是下載成功了,接下來就是要配置環境變量了。
環境變量配置 1.ANDROID_HOME:D:\Android\android-sdk 自己實際安裝路徑 2.Path已有變量追加值:
%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools\28.0.3\; 自己具體版本號
4.驗證
使用adb命令驗證即可,在dos窗口輸入adb,出現如下截圖,說明安裝成功
三、Python安裝
python的安裝方式就略過了,也只是一路下一步即可,無須贅述。
四、Appium
1.什么是Appium
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實現了真正的跨平台自動化測試。
2.Appium工作原理
2.1 Android
在Android端,appium基於WebDriver協議,利用Bootstrap.jar,最后通過調⽤用UiAutomator的命令,實現App的自動化測試。UiAutomator測試框架是Android SDK自帶的App UI自動化測試Java庫。
另外由於UiAutomator對H5的支持有限,appium引入了chromedriver以及safaridriver等來實現基於H5的自動化。
appium 在android端工作流如下:
①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。
2.2 IOS
在IOS端,appium同樣使⽤WebDriver的一套協議。與Android端測試框架不同的是,appium ios封裝了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自動化測試框架),然后在設備中注⼊入bootstrap.js進⾏行監聽。
appium 在ios端工作流如下:
①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上完成具體的動作。
更多詳細可參見這篇博文:https://www.cnblogs.com/sophia194910/p/7515165.html
3.Appium安裝
Appium下載地址:https://bitbucket.org/appium/appium.app/downloads/
將下載的zip包解壓后安裝,安裝很簡單,按提示操作即可。
配置環境變量
path環境變量:追加環境變量 C:\Program Files (x86)\Appium\node_modules\.bin; 具體安裝路徑
驗證
輸入命令appium-doctor查看,出現如下截圖,說明安裝成功
五、Node.js
配置Appium的環境,必須要有Node.js(Appium就是由Node.js編寫的),所以需要對Node.js進行安裝和配置環境。
下載地址:http://nodejs.cn/download/
下載對應的版本,如下所示
下載安裝包后,雙擊安裝,具體步驟忽略了,很簡單。
配置環境變量
加path環境變量:C:\Program Files\nodejs\ node安裝路徑
驗證
通過命令node -v查看node版本,出現如下截圖,說明安裝成功
六、Appium-python-Client
1.什么是Appium-python-Client
Appium的實用方法都在Client的源碼里,對於driver和webelement實例,均有對應的元素查找方法(webelement查找的是下面的子元素),有些兒專門針對手機的函數,則需要在這個Client安裝后方可使用。
Appium為了實現自己的find查找方式,首先自定義了一個MobileBy類,給這個類對象塞入了它定義的一些擴展屬性,這些屬性的值會通過webdriver協議推送到server端去識別和執行,為了讓這些屬性運用到find方法中,appium很好地繼承和擴展了webdriver.Remote,然后通過調用driver實例的find_element和find_elements兩個核心方法實現元素查找。所以,既然是擴展,appiumdriver實例可以使用seleniumdriver的所有關於元素查找的實例方法。
2.安裝Appium-python-Client
使得appium和python建立連接關系,使用命令:pip install Appium-Python-Client,出現如下截圖,則說明安裝成功。
七、Pycharm
工具安裝也忽略了,安裝很簡單的。
經過如上七個步驟的操作,基於Python的Appium環境搭建就成功了。雖說成功了,但也僅僅是個開端而已,想要做好自動化,還是需要靜下心來,研習一番。今天的環境搭建就介紹到這了,下次帶來genymotion及腳本的分享。有描述錯誤的地方,歡迎批評指正。