<h1>ios界面自動化工具--Appium</h1>php
<p>Appium是一款開源的移動端自動化測試框架,支持Android和Ios,以前簡單介紹過Appium,連接<a href="http://www.yeetrack.com/?p=639">http://www.yeetrack.com/?p=639</a>。最近在作ios的自動化測試,再詳細記錄一下過程。</p>java
<h2>安裝Appium</h2>python
<p>既然使用Appium框架,安裝確定是必須的,兩種方式源碼安裝,或者直接安裝二進制dmg文件。</p>ios
<ul> <li><p>源碼方式</p>git
<pre><code> git clone https://github.com/appium/appium </code></pre>github
<p> 下載完成後,執行<code>sh reset.sh</code>便可,它會將appium配置到咱們電腦的環境變量中,直接使用<code>Appium &</code>啓動便可。可是這種安裝方式,我沒有找到<strong>Appium Inspector</strong>這個界面分析工具。界面的自動化測試,若是少了這款工具,就比較糾結了。</p></li> <li><p>二進制直接安裝app包</p>xcode
<p> Appium在 2014-10-20左右更新了1.3.1版本,對Xcode6和ios 8.1更友好了,建議下載此版本。下載地址:<a href="https://github.com/appium/appium/releases">https://github.com/appium/appium/releases</a>,下載安裝完成後,在mac的應用程序裏應該出現Appium的圖標了。</p></li> </ul>ruby
<h2>安裝Xcode</h2>app
<p>既然作ios的自動化測試,xcode最好仍是安裝,雖然能夠經過命令行build編譯、打包ios項目。安裝Xcode,直接在Apple Store中搜索下載便可,Xcode 6.1版本。</p>框架
<h2>樣例工程</h2>
<p>直接run Appium的樣例工程是最快的上手方式,Appium提供了各類語言版本的樣例工程,包括Android、Ios,語言有java、php、.net、js、perl、python、ruby。我一直用java,這裏就已java語言爲例。</p>
<ol> <li>下載代碼: <code>git clone https://github.com/appium/sample-code.git</code></li> <li>安裝maven,配置環境變量</li> <li><p>修改樣例工程中的配置</p>
<p> sample-code/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/UICatalogTest.java</p>
<pre><code> @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); } </code></pre>
<p> 若是用模擬器運行的話,應該不須要修改(前提是在命令行下build完了開發代碼,xcodebuild);真機的話,須要修改爲下面的樣子:</p>
<pre><code> // 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); </code></pre></li>
<li><p>啓動Appium服務,在測試項目的根路徑執行<code>mvn clean mvn -Dtest=com.saucelabs.appium.UICatalogTest test</code>便可.</p></li> </ol>
<h2>Appium Inspector</h2>
<p>在Android中,咱們可使用<strong>hierarchyviewer</strong>這個強大的工具,來分析界面控件,查看控件id、name、類型等。在ios若是要分析界面控件,可使用Xcode查看,或者經過Xcode的UIAutomator錄製的js腳本查看,可是都比較麻煩。Appium爲咱們提供了<strong>Inspector</strong>這款工具。簡單使用步驟以下:</p>
<ol> <li><p>點擊「蘋果」圖標,設置相關參數,如截圖</p>
<ul> <li>App Path:使用模擬器設置此選項,指定build出的app程序,路徑如: <code>/Users/apple/work/workspace/sample-code/sample-code/apps/UICatalog/build/Release-iphonesimulator/UICatalog.app</code></li> <li>BundleID:使用真機設置此選項,這個就是Xcode中的Bundle identifier這個參數,在上面說過一次。</li> <li>Force Device 選擇要啓動的機器類型</li> <li>Platform Version 指定ios版本</li> <li>UDID 使用真機設置此選項,這是iphone的惟一性標識,可使用itune查看</li> <li>Xcode Path: 設置Xcode的路徑,若是mac中安裝了多個Xcode能夠在這裏進行手動指定</li> </ul> </li> <li><p>點擊「Launch」圖標,啓動Appium Server</p></li> <li>點擊「Launch」左側的放大鏡圖標,就能夠啓動Inspector工具,比較慢,耐心等待。加載完畢後,能夠查看界面控件樹,還能夠錄製腳本。點擊控件後,能夠看到該控件的name、value、label、xpath、type等,當前前提是開發定義了這些東西。</li> </ol>
<h2>遇到的問題</h2>
<a href="http://www.yeetrack.com/?p=993"><h1>繼續閱讀-></h1></a>