Appium :Windows 平台上的使用 Java 语言实现 appium 自动化程序 for Android

来源:互联网 发布:奇虎软件怎么样 编辑:程序博客网 时间:2024/05/18 00:51

一,环境配置篇
在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。

0 0
原创粉丝点击