Windows 平台上的使用 Java 语言实现 appium 自动化程序 for Android(完整版)

首先说下楼主也是个新手,摸索了好几天天 终于完成了第一个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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的Appium自动化脚本示例,它使用Java编写: ```java import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; public class AppiumTest { public static void main(String[] args) throws MalformedURLException { DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability("deviceName", "emulator-5554"); caps.setCapability("platformName", "Android"); caps.setCapability("appPackage", "com.android.calculator2"); caps.setCapability("appActivity", "com.android.calculator2.Calculator"); caps.setCapability("noReset", true); AndroidDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), caps); // 查找元素并输入数字 MobileElement el1 = driver.findElementById("com.android.calculator2:id/digit_1"); el1.click(); MobileElement el2 = driver.findElementById("com.android.calculator2:id/digit_5"); el2.click(); // 查找元素并执行操作 MobileElement el3 = driver.findElementByAccessibilityId("plus"); el3.click(); MobileElement el4 = driver.findElementById("com.android.calculator2:id/digit_2"); el4.click(); MobileElement el5 = driver.findElementById("com.android.calculator2:id/result"); String result = el5.getText(); System.out.println("计算结果为: " + result); // 关闭驱动 driver.quit(); } } ``` 这个示例使用AppiumJava客户端库,并启动了一个Android模拟器上的计算器应用程序。它查找了应用程序中的数字和操作元素,并执行了加法操作。然后,它获取了计算结果并将其输出到控制台。最后,它关闭了驱动程序。请注意,您需要根据您的应用程序和设备进行适当的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值