您的位置:首页 > 移动开发

Appium for windows 环境安装搭建部署和第一个实例demo

2015-01-07 13:41 573 查看
注:本文适用于AppiumForWindows-1.0.0以前版本,
AppiumForWindows-1.0.0之后版本,编写中

一、安装android的SKD

下载URL:http://developer.android.com/intl/zh-cn/sdk/index.html

配置系统环境变量
ANDROID_HOME
D:\adt\adt-bundle-windows-x86_64-20140321\sdk

Path添加:
%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

二、安装Appium
直接下载最新的 Appium for windows,(我用的是AppiumForWindows-0.17.6)
https://bitbucket.org/appium/appium.app/downloads/ 注:appium是在.net4.5上用,而XP上不能安装.net4.5,所以高版本最新的appium是不支持xp的

双击Appium.exe就能启动Appium界面,点击【Launch】开启服务




这时 http://127.0.0.1:4723/ 能打开

三、打开ecplise
1.新建一个Java Project , 名为 appiumdemo 。
2.新建文件夹名为 apps ,在该文件夹下再新建一个名为ContactManager 的文件夹,
https://github.com/appium/appium/tree/master/sample-code/apps
下载测试用的 ContactManager.apk ,放在该文件夹下。

3.新建包名 com.saucelabs.appium ,
去 github 下载代码 https://github.com/appium/appium/blob/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidContactsTest.java 放置在该包下。

此时,你会发现有报错信息,那是因为还没有导入必要的jar包。
4.导入JUnit包
下载并导入junit-4.10.jar
5.导入selenium 类库
下载URL: http://docs.seleniumhq.org/download/
解压缩后得到 selenium-java-2.41.0.jar, selenium-java-2.41.0-srcs.jar 和libs文件夹中的jar,
把这些一起导入。
6.最后我们得到的工程目录如下(注:因libs文件夹的jar过多,导致图片过长,这里不做显示,但是一定要导入)




7.源代码如下
注:如果是用testngrun的话,把@Before改成@BeforeMethod ,把@After改成@AfterMethod

package com.saucelabs.appium;

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 WebDriverdriver;

    @Before
    public void setUp()throws Exception {
    // set up appium
       File classpathRoot = newFile(System.getProperty("user.dir"));
       File appDir = new File(classpathRoot,"apps/ContactManager");
       File app = new File(appDir,"ContactManager.apk");
       DesiredCapabilities capabilities = newDesiredCapabilities();
      capabilities.setCapability("device","Android");
      capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
      capabilities.setCapability(CapabilityType.VERSION, "4.4");
      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(newURL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @After
    public void tearDown()throws Exception {
   System.out.println("end");
    driver.quit();
    }

    @Test
    public void addContact(){
    WebElement el =driver.findElement(By.name("Add Contact"));
       el.click();
       List textFieldsList =driver.findElements(By.tagName("textfield"));
       textFieldsList.get(0).sendKeys("SomeName");
      textFieldsList.get(2).sendKeys("Some@example.com");
      driver.findElement(By.name("Save")).click();
    }

    public classSwipeableWebDriver extends RemoteWebDriver implementsHasTouchScreen {
       private RemoteTouchScreen touch;

       public SwipeableWebDriver(URL remoteAddress,Capabilities desiredCapabilities) {
          super(remoteAddress, desiredCapabilities);
           touch =new RemoteTouchScreen(getExecuteMethod());
       }

       public TouchScreen getTouch() {
           returntouch;
       }
    }
}

8.启动我们的模拟器(我用的是4.4.2),并解锁
9.右键 AndroidContactsTest.java ,【run as】-【JUnit Test】-【AndroidJUnit Test Launcher】-【OK】
10.运行成功以后,我们可以看到单元测试运行通过。




11在appium的命令行中,我们也可以看到一些有意思的log
这段是启动appium时,获取模拟器的连接



这段是检查待测试的app是否被安装




启动bootstrap




脚本POST推送命令:根据name查找名为Save的控件
bootstrap debug编译指令给模拟器
模拟器返回给bootstrap find查找到
bootstrap返回给脚本success

脚本再推送点击指令




附:setUp() 脚本讲解
capabilities.setCapability下可以设置很多关键字。
1. app: .ipa 或.apk文件所在的本地绝对路径或者远程路径。Appium会先尝试安装路径对应的应用在指定的真机或模拟器上。
对于Android系统,如果已经指定app-package和app-activity的话,那么就可以不用指定app了.
2. browserName: 要启动的浏览器的名称,比如chrome , safari
3. device: 要使用的模拟器或真机的类型名称,比如ios, mock_ios,android , firefoxos
4. version : Android API版本,iOS版本, Chrome/Safari版本,比如4.4
5. newCommandTimeout: 设置在接受到有效命令之前结束进程并退出的时间,比如 60
6. launch: 在Appium已经安装的情况下可自动启动app。默认是true。
Android特有属性
7. app-activity : 要启动的Android应用对应的Activity名称
8. app-package : 要运行的Android应用的包名
9. app-wait-activity: 要等待启动的Android Activity名称
10. device-ready-timeout: 设置一个模拟器或真机准备就绪的时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: