<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>