1.创建一个maven项目

成功新建工程:

编辑pom.xml,在<dependencies></dependencies>下添加appium相关依赖:

  1. <dependency>
  2.  
  3. <groupId>org.testng</groupId>
  4.  
  5. <artifactId>testng</artifactId>
  6.  
  7. <version>6.9.10</version>
  8.  
  9. <scope>test</scope>
  10.  
  11. </dependency>
  12.  
  13. <dependency>
  14.  
  15. <groupId>io.appium</groupId>
  16.  
  17. <artifactId>java-client</artifactId>
  18.  
  19. <version>LATEST</version>
  20.  
  21. <exclusions>
  22.  
  23. <exclusion>
  24.  
  25. <groupId>org.seleniumhq.selenium</groupId>
  26.  
  27. <artifactId>selenium-java</artifactId>
  28.  
  29. </exclusion>
  30.  
  31. </exclusions>
  32.  
  33. </dependency>
  34.  
  35. <dependency>
  36.  
  37. <groupId>com.saucelabs</groupId>
  38.  
  39. <artifactId>sauce_junit</artifactId>
  40.  
  41. <version>LATEST</version>
  42.  
  43. <scope>test</scope>
  44.  
  45. </dependency>
  46.  
  47. <dependency>
  48.  
  49. <groupId>org.seleniumhq.selenium</groupId>
  50.  
  51. <artifactId>selenium-java</artifactId>
  52.  
  53. <version>2.53.0</version>
  54.  
  55. </dependency>
  56.  
  57. <dependency>
  58.  
  59. <groupId>org.seleniumhq.selenium</groupId>
  60.  
  61. <artifactId>selenium-remote-driver</artifactId>
  62.  
  63. <version>2.53.0</version>
  64.  
  65. </dependency>

 

然后在<dependencies></dependencies>后面加上appium专用库:

  1. <repositories>
  2.  
  3. <repository>
  4.  
  5. <id>saucelabs-repository</id>
  6.  
  7. <url>https://repository-saucelabs.forge.cloudbees.com/release</url>
  8.  
  9. <releases>
  10.  
  11. <enabled>true</enabled>
  12.  
  13. </releases>
  14.  
  15. <snapshots>
  16.  
  17. <enabled>true</enabled>
  18.  
  19. </snapshots>
  20.  
  21. </repository>
  22.  
  23. </repositories>

 

保存之后会自动下载Maven Dependencies相关jar包

 

2.新建一个TestNG class

右键选择com.sun.appiumdemo

TestNG->Create TestNG class

具体代码如下:

  1. package com.sun.appiumdemo;
  2.  
  3. import java.io.File;
  4.  
  5. import java.net.MalformedURLException;
  6.  
  7. import java.net.URL;
  8.  
  9. import java.util.List;
  10.  
  11. import org.openqa.selenium.By;
  12.  
  13. import org.openqa.selenium.WebElement;
  14.  
  15. import org.openqa.selenium.remote.DesiredCapabilities;
  16.  
  17. import org.testng.annotations.AfterClass;
  18.  
  19. import org.testng.annotations.BeforeClass;
  20.  
  21. import org.testng.annotations.Test;
  22.  
  23. import io.appium.java_client.AppiumDriver;
  24.  
  25. import io.appium.java_client.android.AndroidDriver;
  26.  
  27. public class AppiumTest {
  28.  
  29. public AppiumDriver<WebElement> driver;
  30.  
  31. @BeforeClass
  32.  
  33. public void startTest() throws MalformedURLException {
  34.  
  35. File classpathRoot = new File(System.getProperty("user.dir"));
  36.  
  37. File appDir = new File(classpathRoot, "res/app");
  38.  
  39. File app = new File(appDir, "ContactManager.apk");
  40.  
  41. DesiredCapabilities capabilities = new DesiredCapabilities();
  42.  
  43. capabilities.setCapability("automationName", "Appium");
  44.  
  45. capabilities.setCapability("platformName","Android");
  46.  
  47. capabilities.setCapability("deviceName","Android Emulator");
  48.  
  49. capabilities.setCapability("platformVersion", "4.4.2");
  50.  
  51. capabilities.setCapability("app", app.getAbsolutePath());
  52.  
  53. capabilities.setCapability("appPackage", "com.example.android.contactmanager");
  54.  
  55. capabilities.setCapability("appActivity", ".ContactManager");
  56.  
  57. driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
  58.  
  59. }
  60.  
  61. @Test
  62.  
  63. public void addContact() {
  64.  
  65. WebElement el = driver.findElement(By.xpath(".//*[@text='Add Contact']"));
  66.  
  67. el.click();
  68.  
  69. List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
  70.  
  71. textFieldsList.get(0).sendKeys("Some Name");
  72.  
  73. textFieldsList.get(2).sendKeys("Some@example.com");
  74.  
  75. driver.swipe(100, 500, 100, 100, 2);
  76.  
  77. driver.findElementByXPath(".//*[@text='Save']").click();
  78.  
  79. }
  80.  
  81. @AfterClass
  82.  
  83. public void afterClass() {
  84.  
  85. driver.quit();
  86.  
  87. }
  88.  
  89. }

在maven项目的根目录下新建res/app目录,将安卓测试APP放在此目录。

测试应用下载地址 :

链接: http://pan.baidu.com/s/1skPrdVJ 密码: bkvh

 

3.新建虚拟机或者真机运行

模拟器推荐使用Genymotion,直接下载 .exe,双击安装。

官网地址:https://www.genymotion.com/download/

下载地址:

链接: http://pan.baidu.com/s/1nv3YXZz 密码: 3u93

如果想要用真机测试,那么需要打开真机的USB调试模式,打开CMD输入adb devices命令,返回一下设备信息表明设备开启调试模式成功。

 

4.启动Appium Server

启动Appium Server,用于接收和处理来自client的请求。双击已经安装好的Appium

如图所示表示启动成功

 

5.执行测试用例

执行测试用用例前,确保你的安卓模拟器已经打开或者真机已经打开USB调试并连接到电脑并且Appium Server启动成功。打开eclipse并打开AppiumTest.java,鼠标右键执行run as TestNG test,用例就开始执行了

Appium服务端就会输出相关信息

用例执行完毕。

三 APPIUM Android自动化 测试初体验的更多相关文章

  1. 二 APPIUM Android自动化 测试初体验

    本文转自:http://www.cnblogs.com/sundalian/p/5629358.html 1.创建一个maven项目 成功新建工程: 编辑pom.xml,在<dependenci ...

  2. 20155315庄艺霖第三次作业之Linux初体验

    Linux初体验 安装Linux三两事 老师的作业要求基于VirtualBox安装Linux系统,我一开始下载了VB但是电脑运行不了,后来看网上的教程下载了VMware,才算开始了我的Linux之旅. ...

  3. 【APP测试初体验】android测试命令----压力测试

    **以前一直做web测试,新一份工作新的开始,决定尝试新的测试,于是选择了一个从未接触的 APP测试. 怎么说呢,对于做web测试的人来说,app真的没有一点难度...测试流程一样,测试方法也差不多, ...

  4. 【APP测试初体验】android测试命令----adb常用命令

    --adb shell 命令adb devices 查看设备adb shell adb shell "ls -al /system/bin" >e:\a.txtsample_ ...

  5. [唐胡璐]Android自动化- 测试环境搭建中遇到的问题

    这里主要讲一下在配置过程中遇到一个小问题,其他的步骤会略过。 安装JDK,并设置环境变量 下载Android ADT, 解压后,文件夹显示如下: Download the ADT bundle for ...

  6. 二 APPIUM Android自动化 环境搭建

    1.安装JAVA运行环境   2.安装Android开发环境   3.安装nodejs 下载地址:https://nodejs.org/en/ 下载完成之后双击安装.   4.安装APPIUM,App ...

  7. kafka-zk-安装测试初体验

    第一步: 安装 安装工具brew install kafka 会自动安装依赖zookeeper 注:安装配置文件位置 /usr/local/etc/kafka|zookeeper 注: #tickTi ...

  8. Android Studio的初体验

    在机缘巧合之下遇到了安卓开发,接触了Android Studio开始了漫长的改bug的道路,以下为简易版心酸历程 首先我需要成功安装Android Studio,由于我过于叛逆以及为了避免出错于是从一 ...

  9. WordCount-软件测试初体验

    github:https://github.com/skz12345/WordCount PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 40 60 · Esti ...

随机推荐

  1. 剑指offer替换空格

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  2. 고서--做完A之后做B, B受A影响

    1. 합격 소식을 듣고서 매우 기뻤어요.. 2. 친구하고 심하게 다투고서 마음이 안 좋았어요. 3. 급한 일을 먼저 끝내고서 이야기합시다.' 4. 창문을 열고서 상쾌한 공기를 마서 ...

  3. CF 299 div2 C 博弈

    http://codeforces.com/contest/299/problem/C 题目大意: 给两个0,1串保证长度都是2*n(偶数),问,Yaroslav, Andrey按照顺序取,首先是ya ...

  4. 两种不同的重置样式方法(normalize.css)

    重置样式非常多,凡是一个前端开发人员肯定有一个常用的重置CSS文件并知道如何使用它们.他们是盲目的在做还是知道为什么这么做呢?原因是不同的浏览器对一些元素有不同的默认样式,如果你不处理,在不同的浏览器 ...

  5. hql 链接查询

    第一部分.连接查询 一.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分三种: 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询 ...

  6. HRBUST 1909 理工门外的树(双数组实现线段树功能)

    线段树固然可以做,但是在考虑线段树之前应该先考虑一下,这种用两个数组来解决问题的方法能不能行,如果行的话,就会为我们省很多时间,毕竟线段树代码量比较大 #include<iostream> ...

  7. 定制化jQuery

    毋庸置疑,jQuery很强大,很方便,但是......越来越臃肿,怎么办?,jquery只基于模块化开发的,可以通过工具定制jquery,选择你需要的模块即可. 下面这个网站可以帮你完成定制 http ...

  8. Django之路: 模版篇

    一.Django 模版  上章是介绍简单的把django.http.HttpResponse的内容显示到网页上,下面就介绍以下如何使用渲染模版的方法来显示内容.本节代码是基于Django 1.8,但 ...

  9. Delphi xe7并行编程快速入门(转)

    源:http://blog.csdn.net/henreash/article/details/41315183 现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优 ...

  10. COC建筑拖动的实现

    最近在玩COC,多体验一下手游的体验,因为自己毕竟一直是做页游的,有些观念需要转变一下. 好像偏了,玩了几次之后突然想起COC那个地图拖动的自己之前实现过,那是2010年左右的时候,模拟经营类页游大行 ...