首先说下楼主也是个新手,摸索了好几天天 终于完成了第一个 appium 程序,帖子写的不合理的地方,请大家轻喷,指导,大家一起学习。写这个帖子就是为了方便新手能快速入门,也算是自己的一种巩固吧。好了,开始直奔主题!
一,环境配置篇
在 Windows 上配置
1)下载安装 node.js(http://nodejs.org/download/)安装的时候有选项,记得把环境变量添加到 path 路径
2)使用 npm 安装 appium,运行 CMD 输入 npm install -g appium(有些朋友反应在 cmd 下运行 npm 无效,如果这样请把 nodejs 的目录添加到用户变量的 path 下重启 cmd 即可 参考帖子:http://blog.csdn.net/iispring/article/details/8023319),如下图:
3)下载安装 Android SDK(http://developer.android.com/sdk/index.htmlANDROID_HOME 环境变量指向 SDK 路径,PATH 变量设定%),设置 ANDROID_HOME%\tools 和% ANDROID_HOME%\platform-tools
4)安装 JDK 并设置 JAVA_HOME 环境变量
5)安装 ANT,并将%ANT_HOME%\bin 路径加到 PATH
6)安装 MAVEN,设置%M2_HOME%\bin,并添加到 PATH 中
7)安装 Git
8)运行 CMD 输入 appium-doctor 检查你的环境是不是都配置好了 如图:
9)下载 selenium 类库(http://docs.seleniumhq.org/download/ 请下载 java 平台的)
10)Eclipse 自定义库中新建一个 selenium 库 指向本地的硬盘 selenium lib 的路径 如图:
到此 环境算是配置好了,其中(5,6,7 这三步骤只是为了构建项目和从 github 拖拽项目时候需要的,我的帖子不涉及到,但是为了 appium-doctor 顺利检查成功通过还是设置下)
二,appium 启动篇
由于我测试是连接真机的,所以这里需要先通过 adb devices -l 命令获得 真机的 udid 号,详细步骤如下:
1)真机(安卓版本 4.2.2)通过 USB 连接 电脑,驱动装好,打开 USB 调试模式
2)运行 cmd 输入 adb devices -l 查看 UDID 如图:
3)再在 cmd 中输入 appium -a 127.0.0.1 -p4723 -U4d007e9a1b0050d1 (-a 表示 ip,-p 表示端口,-U 表示设备的 udid 可以通过 appium -h 查看更多命令)
4)如果如下图所示 就表示 appium 服务启动成功了,注意这个窗口不要关闭 因为这是 appium 的服务 关了就关了服务,后面过程无法执行,而且这个窗口也是 日志输出的窗口用于排错。
三,代码执行篇
这块我主要是执行的是官方的演示代码:通讯录管理 app,安装打开 app,并添加一个联系人保存的操作
1)首先去下载 ContactManager.apk(http://yunpan.cn/QInSWzP2YWgTJEclipse 工作目录的 apps 文件夹下),等会放在
2)打开 Eclipse,新建一个 java project,去 appium 的 github(https://github.com/appium/appium/tree/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appiumAndroidContactsTest.java 拷贝下来)上将 放到自己的包下,如下图所示:
其中 apps 目录 是我放 ContactManager.apk 用的
3)在 Project 上右键点击 Build Path -> Add Libraries.. ->User Library -> 勾选自己刚刚自建的 selenium 库(环境配置篇 第 10 步)这样代码就不会因为在不到对应的库而报错了
4)对代码进行部分修改:
package com.incito.appiumdemo;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.interactions.HasTouchScreen;
import org.openqa.selenium.interactions.TouchScreen;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteTouchScreen;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.io.File;
import java.net.URL;
import java.util.List;
public class AndroidContactsTest {
private WebDriver driver;
@Before
public void setUp() throws Exception {
// set up appium
File classpathRoot = new File(System.getProperty("user.dir"));
//存放app目录:apps
File appDir = new File(classpathRoot, "apps");
File app = new File(appDir, "ContactManager.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("device","Android");
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//我真机的安卓版本是4.2.2
capabilities.setCapability(CapabilityType.VERSION, "4.2.2");
//使用的是windows平台
capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("app-package", "com.example.android.contactmanager");
capabilities.setCapability("app-activity", ".ContactManager");
driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void addContact(){
WebElement el = driver.findElement(By.name("Add Contact"));
el.click();
List<WebElement> textFieldsList = driver.findElements(By.tagName("textfield"));
textFieldsList.get(0).sendKeys("wangyang");
textFieldsList.get(1).sendKeys("18872573204");
textFieldsList.get(2).sendKeys("stephenwang@gmail.com");
driver.findElement(By.name("Save")).click();
}
public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen {
private RemoteTouchScreen touch;
public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) {
super(remoteAddress, desiredCapabilities);
touch = new RemoteTouchScreen(getExecuteMethod());
}
public TouchScreen getTouch() {
return touch;
}
}
}
5)代码右键 run as "Junit test" appium 窗口会有日志记录,代码无报错 而且在真机上完成了这个安装 apk 添加联系人的操作(注意输入法不要默认是中文输入,不然会报错),如图:
注意:我的 appium 版本是 0.16.0 据说最新版本的上面会报报 EXDEV error 解决办法见:http://testerhome.com/topics/639
基于 Windows 平台上的使用 Java 语言实现 appium 自动化程序 for Android devices 的详细步骤就算是写完了 有点像记流水账 ,希望对于新手有点用。 请各位大神轻喷,我也是新手。有时间的话 在写个完整版的基于 Windows 平台上的使用 Python 语言实现 appium 自动化程序 for Android devices。