注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

MAC下搭建appium UI自动化环境详细步骤  

来自燕岭峰寒   2015-11-16 11:19:08|  分类: 自动化测试 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
目前所负责的产品已经正式上线,功能也越来越多,为提高后续测试的效率,提前准备起ios ui自动化的框架,待产品UI稳定后,可以直接进行用例的填充。在网上查看资料,越来越多的人使用appium做移动端的UI自动化,同时组内已经使用appium搭建了Android端的自动化,因此也采用此工具搭建iOS的UI自动化框架。
        但在搭建过程中遇到了各种各样的问题,搜索网上资料几乎前篇一律,按照提供的步骤,环境几乎是搭建不起来的。所以记录我的搭建经历,分享给同样会遇到相同问题的同学们。
一、系统要求:
  • Mac OS X 10.7 或者更高,推荐最新系统
  • XCode >= 4.6.3,推荐最新系统
  • Apple Developer Tools (iPhone simulator SDK, command line tools)
---插曲:
   我的MAC系统版本为10.10.3,按照以往的使用习惯,安装软件都是安装最新的,于是我就下载了最新版本的XCode7,话费了将近半小时下载安装好XCode7后,打开的时候傻眼了,提示我当前系统版本过低,如下图:
手把手教你搭建MAC appium UI自动化环境 - 燕岭峰寒 - 我的博客
   因此,提醒大家在安装XCode7的时候,一定要注意当前OS X的版本是否>=10.10.5。由于受限与系统版本,我安装的是XCode6. (XCode下载地址:http://pan.baidu.com/s/1gdtw44z

二、搭建Appium环境:
在mac下搭建Appium环境有两种方式:
1. 使用terminal命令行的方式安装;
2. 使用Appium gui,直接下载appium.dmg运行即可;

下面详细介绍两种方式:
使用terminal命令行的方式安装:
1. 使用该方式安装的前提先安装brew和node,检查是否安装的方法:

$ brew -v
Homebrew 0.9.5 (git revision cd4952; last commit 2015-11-12)

$ node -v
v5.0.0

如果输入上述命令后,如果没有出现版本信息,说明机器上未安装brew或node。
安装brew的方法:
安装node的方法:
方式一:

brew install node

方式二:

git clone git://github.com/ry/node.git
cd node
./configure
make
sudo make install

2. 安装appium
需要使用非root账号安装appium:

npm install -g appium

如果使用了root安装了appium,需要先卸载再使用非root账号重装:

$ sudo npm uninstall appium -g  //卸载appium
unbuild appium@1.3.4
$ sudo chmod -R 777 /usr/local   //给予非root用户权限
$ npm install -g appium  //重新安装

3. 安装appium client
两种方式安装:
a. npm install wd:较老的安装方式
b. 到git里面下载client,比如安装python-client:

git clone git@github.com:appium/python-client.git
cd python-client
python setup.py install

4. 检查appium的依赖是否全部安装
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客
 
我们当前是在mac上安装,最后一个错误不用管。
5. 启动appium
a. 启动模拟器测试:

$ appium
info: Welcome to Appium v1.4.13 (REV c75d8adcb66a75818a542fe1891a34260c21f76a)
info: Appium REST http interface listener started on 0.0.0.0:4723
info: Console LogLevel: debug

b. 连接真机测试:
连接真机,启动是需要带参数-U 为真机的UDID,--app为需要运行的app的boundleID

$ appium -U xxxxxxxxxxxxxxxxxxx --app xxxxxxxxxxxx
info: Welcome to Appium v1.4.13 (REV c75d8adcb66a75818a542fe1891a34260c21f76a)
info: Appium REST http interface listener started on 0.0.0.0:4723
info: [debug] Non-default server args: {"app":"com.netease.erciyuan","udid":"49455326c3b73198d3091b11227d8a333ed9ce31"}
info: Console LogLevel: debug

使用Appium gui,直接下载appium.dmg运行即可
(appium.dmg下载地址:http://pan.baidu.com/s/1mgCjojI);
下载好.dmg文件,双击该文件进行安装。
a.  配置service ip和port:
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客
 
 
b. 启动模拟器测试,需要配置如下几项:
其中App Path为build以后的.app文件路径。
配置完成后点击Launch,即可启动appium服务。
--注意:
1. 此处选择的Force Device和Platform Version要与.app在XCode中编译时使用的一致;
2. .app要从该位置取../Build/Products/Debug-iPhonessimulator,如果从Debug-iPhones取,在inspector中启动应用会不停的闪退。
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客
c. 启动连真机的测试,需要配置如下几项:
BundleID:手机连接到MAC上,到Xcode里面的Window->Devices->Installed Apps的Identifier中查看;
UDID:手机连接到MAC上,到Xcode里面的Window->Devices->Devices Information的Identifier中查看;
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客  
三、运行Appium自带的测试app:
下载appium的测试例子:

git clone https://github.com/appium/sample-code

1. 使用terminal命令行形式运行例子
a. 按照第二步中的方式启动appium;
b. 输入下面的命令编译生成示例程序:

cd sample-code/sample-code/apps/TestApp
xcodebuild -sdk iphonesimulator

目录下通过如下命令编译生成示例程序:xcodebuild -sdk iphonesimulator 当看到**BUILD SUCCEEDED**则说明编译成功。这行命令在TestApp项目底下创建了一个build/Release-iphonesimulator目录,并且声称一个可以透过Appium服务器交流的.app封装包,该包为appium gui中App Path的路径。
c. 运行例子:

cd sample-code/sample-code/examples/python
python ios_simple.py

运行以上命令,出现下图说明正常。
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客
 
2. 使用Appium Inspector运行用例
按照第二步中的方式配置appium,点击Launch,等待启动完成:
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客
点击左侧的inspector图标“放大镜”,运行启动后,出现下图说明正常。
左下角的界面可以寻找当前界面的元素位置。
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客

四、如何在Eclipse+TestNG框架下编写并运行脚本:
该部分介绍如何在Eclipse工具搭配TestNG框架下如何编写并运行测试脚本。
1. 在Eclipse中创建工程: 'File'->'New'->'Java Project,输入工程名字,点击next,点击“Finish”。
2. 在工程的src上右键->'New'->'Class',输入Package和Name,点击“Finish”。
创建后的工程如下图:
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客
3. 添加必要的jar包
下载Selenium Standalone Server/Selenium Client &WebDriver Language Bindingshttp://docs.seleniumhq.org/download/

安装TestNG:
在线安装方式:

Help -> install new software -> 输入 http://beust.com/eclipse/ 

离线安装方式:

资源分享链接:http://pan.baidu.com/s/1bnsb3aB

(1)解压eclipse-testng离线包.zip


(2)将【eclipse-testng离线包/feature】中的文件夹org.testng.eclipse_6.8.6.20130607_0745复制到【MyEclipse安装目录/features】目录下


(3)将【eclipse-testng离线包/org.testng.eclipse_6.8.6.20130607_0745】文件夹复制到【MyEclipse安装目录/plugins】目录下


(4)重启MyEclipse,Windows - show view - TestNG

 
在工程上右键->Properties->Java Build Path->Libraries->Add External JARs,将下载的selenium jar导入进来,Add Library,将TestNG添加进来,如下图:
MAC下搭建appium UI自动化环境详细步骤 - 燕岭峰寒 - 我的博客

运行的脚本内容如下,在运行脚本上右键->run as->TestNG test,就会出现步骤三中的运行界面。

package com.test.firstest;




import java.io.File;


import java.net.URL;


import java.util.List;


import java.util.concurrent.TimeUnit;




import junit.*;


import junit.framework.TestCase;




import org.openqa.selenium.By;


import org.openqa.selenium.WebDriver;


import org.openqa.selenium.WebElement;


import org.openqa.selenium.remote.CapabilityType;


import org.openqa.selenium.remote.DesiredCapabilities;


import org.openqa.selenium.remote.RemoteWebDriver;


import org.testng.Assert;


import org.testng.annotations.AfterMethod;


import org.testng.annotations.BeforeMethod;


import org.testng.annotations.Test;


public class FirstTestCases {


  public WebDriver wd = null;


  @BeforeMethod


  public void setUp() throws Exception {


    // set up appium


    File appDir = new File("/Users/netease/gacha/ios_automation/sample-code/sample-code/sample-code/apps/TestApp/build/release-iphonesimulator");


    File app = new File(appDir, "TestApp.app");


    DesiredCapabilities capabilities = new DesiredCapabilities();


    capabilities.setCapability("deviceName", "iPhone 5s");


    capabilities.setCapability("platformName", "iOS");


    capabilities.setCapability("platformVersion", "8.4"); 


    capabilities.setCapability("bundleid", "xxxx");//run on real device 


    capabilities.setCapability("app", app.getAbsolutePath());




    wd = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),


        capabilities);


    wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);


    System.out.println("App launched");


  }


  @AfterMethod


  public void tearDown() throws Exception {


    wd.quit();


  }


  @Test


  public void testCases() throws InterruptedException {


    String myname = "Smriti";


    wd.findElement(By.name("Add")).click();


    wd.findElement(By.xpath("//textfield[1]")).sendKeys(myname);


    wd.findElement(By.name("Save")).click();


    Thread.sleep(5000);


    // write all your tests here




wd.close();


  }


}






 


  评论这张
 
阅读(3204)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016