標籤:des android http io os ar 使用 java for
ios介面自動化工具--Appium
Appium是一款開源的移動端自動化測試架構,支援Android和Ios,之前簡單介紹過Appium,連結http://www.yeetrack.com/?p=639。最近在做ios的自動化測試,再詳細記錄一下過程。
安裝Appium
既然使用Appium架構,安裝肯定是必須的,兩種方式源碼安裝,或者直接安裝二進位dmg檔案。
源碼方式
git clone https://github.com/appium/appium
下載完成後,執行sh reset.sh即可,它會將appium配置到我們電腦的環境變數中,直接使用Appium &啟動即可。但是這種安裝方式,我沒有找到Appium Inspector這個介面分析工具。介面的自動化測試,如果少了這款工具,就比較糾結了。
二進位直接安裝app包
Appium在 2014-10-20左右更新了1.3.1版本,對Xcode6和ios 8.1更友好了,建議下載此版本。:https://github.com/appium/appium/releases,下載安裝完成後,在mac的應用程式裡應該出現Appium的表徵圖了。
安裝Xcode
既然做ios的自動化測試,xcode最好還是安裝,雖然可以通過命令列build編譯、打包ios項目。安裝Xcode,直接在Apple Store中搜尋下載即可,Xcode 6.1版本。
範例工程
直接run Appium的範例工程是最快的上手方式,Appium提供了各種語言版本的範例工程,包括Android、Ios,語言有java、php、.net、js、perl、python、ruby。我一直用java,這裡就已java語言為例。
- 下載代碼:
git clone https://github.com/appium/sample-code.git
- 安裝maven,配置環境變數
修改範例工程中的配置
sample-code/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/UICatalogTest.java
@Before public void setUp() throws Exception { // set up appium File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "../../../apps/UICatalog/build/Release-iphonesimulator"); File app = new File(appDir, "UICatalog.app"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); capabilities.setCapability("platformVersion", "7.1"); capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("deviceName", "iPhone Simulator"); capabilities.setCapability("app", app.getAbsolutePath()); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); }
如果用模擬器啟動並執行話,應該不需要修改(前提是在命令列下build完了開發代碼,xcodebuild);真機的話,需要修改成下面的樣子:
// set up appium //File classpathRoot = new File(System.getProperty("user.dir")); //File appDir = new File(classpathRoot, "../../../apps/UICatalog/build/Release-iphonesimulator"); String appName = "5LDV***BF.com.yeetrack.ios.app"; //注意修改成自己的應用,這塊可以在Xcode中查看,實際上就是Xcode中的Bundle identifier這個參數 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); capabilities.setCapability("platformVersion", "7.1.1"); //真機的ios版本 capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("deviceName", "iPhone"); capabilities.setCapability("app", appName); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
啟動Appium服務,在測試專案的根路徑執行mvn clean mvn -Dtest=com.saucelabs.appium.UICatalogTest test即可.
Appium Inspector
在Android中,我們可以使用hierarchyviewer這個強大的工具,來分析介面控制項,查看控制項id、name、類型等。在ios如果要分析介面控制項,可以使用Xcode查看,或者通過Xcode的UIAutomator錄製的js指令碼查看,但是都比較麻煩。Appium為我們提供了Inspector這款工具。簡單使用步驟如下:
點擊“蘋果”表徵圖,設定相關參數,如
- App Path:使用模擬器設定此選項,指定build出的app程式,路徑如:
/Users/apple/work/workspace/sample-code/sample-code/apps/UICatalog/build/Release-iphonesimulator/UICatalog.app
- BundleID:使用真機設定此選項,這個就是Xcode中的Bundle identifier這個參數,在上面說過一次。
- Force Device 選擇要啟動的機器類型
- Platform Version 指定ios版本
- UDID 使用真機設定此選項,這是iphone的唯一性標識,可以使用itune查看
- Xcode Path: 設定Xcode的路徑,如果mac中安裝了多個Xcode可以在這裡進行手動指定
點擊“Launch”表徵圖,啟動Appium Server
- 點擊“Launch”左側的放大鏡表徵圖,就可以啟動Inspector工具,比較慢,耐心等待。載入完畢後,可以查看介面控制項樹,還可以錄製指令碼。點擊控制項後,可以看到該控制項的name、value、label、xpath、type等,當前前提是開發定義了這些東西。
遇到的問題
繼續閱讀->
ios介面自動化工具--Appium