搭建环境 - IOS
1. 一台mac电脑,10.7以上版本,推荐10.9.2
2.从app store上下载xcode (ios sdk 包含在xcode里) 3.下载并安装nodejs(官网:https://nodejs.org/download/)
4.下载Appium server安装文件(https://bitbucket.org/appium/appium.app/downloads/)
搭建环境 - Android
测试Android时,appium server可以安装在Mac, Windows,linux中的任意系统中。一下以windows环境为例。
1.安装JDK和SDK并配置环境变量。 2.安装nodejs windows版。
3.下载安装appium windows版安装文件
至此,我们需要的环境都已搭建完成!
开始写代码
一、启动并配置服务器(说明主要以ios为例)
在mac端打开下载好的appium server。根据真机或者模拟器的不同进行配置。 注意:
A. 真机安装.ipa文件, 模拟器安装.app文件(.app 文件在/Users/{YOUR NAME}/Library/Developer/CoreSimulator/Devices/设备型号/data/Containers) B. BundleId代表app包名,如com.wuba.bangbang
C. UDID代表手机的唯一标识符,设置此选项代表你要测得是真机,如何获得UDID请查看http://jingyan.http://www.njliaohua.com//article/0eb457e506c8d503f1a905b0.html
D. ForceDevice和platformVersion选择你想测试的模拟器版本或者已链接电脑的真机的型号
测试过程中从真机换到模拟器或相反时请注意检查以上选项 E.若想保存测试过程中的app数据则可以设置No Reset选项
F.setting中OverrideExisting Sessions可以避免出现已经有一个sessionid存在而不能成功创建session的问题
Android和ios配置请参考以下截图:
ios settings:
二、编写代码
代码的编写可以在Mac,Linux,Windows上进行,没有平台的限制。 步骤:
A. 创建一个普通的Java工程 B. 导入相关的jar包: ①java_client.jar -->编写测试代码时用到的类和方法都在这里。 ②selenium_java.jar和selenium_standalone.jar。这两个jar包的版本要一致。 ③导入TestNG包。 C.创建一个测试类 ①Capabilities对象 --> 保存此次测试的环境,如要测试的平台、测试手机、测试的app等信息。当然,若server已配置,代码端可以省略,但这个capability对象要存在。 ②AppiumDriver对象 -->对手机的操作由这个类完成。需正确配置appium server的地址。 ③开始对手机进行操作。 D.获取手机中的元素。
使用appium server中
按钮查看当前手机界面的元素。
在脚本中通过findElementByXpath, findElementById, findElementByName等方式获得界面元素,再通过click(), sendKeys()等方法对元素进行操作。
至此第一个Appium测试代码已经完成!
三、优化工程结构 为了使Android和IOS的脚本兼容,appium提供支持PageObject模式。
Appium为Android和IOS分别新加了@AndroidFindBy、@AndroidFindAll和@iOSFindBy @iOSFindAll标签。
Page Object说明文档:
https://code.google.com/p/selenium/wiki/PageFactory https://code.google.com/p/selenium/wiki/PageObjects
以登录界面为例,代码为:
@AndroidFindBy(uiAutomator=\
@iOSFindBy(xpath=\)public WebElement account;
@AndroidFindBy(id=\)
@iOSFindBy(xpath=\public WebElement pwd;
@AndroidFindBy(id=\)
@iOSFindBy(xpath=\) public WebElement role;
@AndroidFindBy(id=\)
@iOSFindBy(xpath=\) public WebElement loginButton;
UiSelector().resourceId(\\\)
ld[1]\)
public void login(String account, String pwd, String role) throws DocumentException, InterruptedException{ }
this.account.sendKeys(account); this.pwd.clear(); this.pwd.sendKeys(pwd);
this.role.click();//click role button
driver.findElementByName(role).click();//select a role this.loginButton.click();//login
四 后续
Appium部署在持续集成中。
相关推荐: