原文来自:一颗糖果  http://www.cnblogs.com/linglingyuese/articles/8418311.html

一、环境搭建

略(后期补)

二、创建一个测试apk包的项目

三、新建项目之后导入jar包、apk等

1、在项目下面创建文件夹:apps、libs,并把要测试的apk安装包及jar包导入项目,准备工作完成后整个 框架如下图所示

注意:java-client和selenium-server-standalone的jar包的版本要对应,最好找齐如上截图所示的版本,要不然会版本冲突导致未知错误

四、新建一个测试Demo:QuizTest.java

package com.test.quiz;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.TimeUnit; import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.AppiumDriver; public class QuizTest { public AppiumDriver driver;
private boolean isInstall = false; public void startRecord () throws IOException{
Runtime rc = Runtime.getRuntime();
rc.exec("cmd.exe /E:/Android/sdk/platform-tools adb shell screenrecord /sdcard/runCase.mp4");//录制屏幕运行视频
} /**
* 开始启动
* @throws IOException
*/
@Before
public void setUp() throws IOException{
// 启动appium
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "emulator-5554");//指定测试机
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName", "Android");// 指定测试平台
capabilities.setCapability("platformVersion", "22");//平台版本 // 配置测试apk
capabilities.setCapability("appPackage", "com.example.quizactivity");//测试的包
capabilities.setCapability("appActivity", "com.example.quizactivity.QuizActivity");//测试的activity
capabilities.setCapability("sessionoverride", true);//每次启动时覆盖session,否则第二次后运行会报错不能新建session
capabilities.setCapability("unicodekeyboard", true);//设置键盘
capabilities.setCapability("resetkeyboard", false); //设置默认键盘为appium的键盘
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // 安装APK,如果真机设备已经安装,则不需要重新安装
if (isInstall){
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot,"apps");
File app = new File(appDir,"QuizActivity.apk");
capabilities.setCapability("app", app.getAbsolutePath());
}
startRecord(); } /**
* 点击显示上一条
* @throws InterruptedException
*/
@Test
public void PreQuestion() throws InterruptedException{
driver.findElementById("com.example.quizactivity:id/prev_button").click();// 点击上一个按钮
Thread.sleep(2000);
driver.findElementById("com.example.quizactivity:id/next_button").click();//点击下一个按钮
Thread.sleep(2000);
String tips = driver.findElementById("com.example.quizactivity:id/question_text_view").getText();
Assert.assertEquals(tips, "The Suez Canal connects the Red Sea and the Indian Ocean.");
Thread.sleep(2000);
} /**
* 结束启动
*/
@After
public void tearDown(){
driver.quit();
} }

其中:

1、指定测试机的获取:adb devices

2、测试包及测试的activity获取:adb shell dumpsys window | findstr mCurrentFocus

3、元素ID的获取:可以利用android-sdk自带的UI Automator Viewer

UI Automator Viewer的目录地址:D:\android\sdk\tools\uiautomatorviewer.bat

双击打开uiautomatorviewer.bat,出现如下图所示页面:

获取PrevButton:

其他值也可以照样获取

五、执行appium

1、首先启动appium

2、在eclipse运行测试项目

3、查看手机可以看到APP自动运行所编写的脚本

 
分类: appium
标签: appium

第一个appium的Demo的更多相关文章

  1. appium跑demo简单实例讲解

    安装appium,设置 demo.pyfrom appium import webdriver #要装webdriver,方法查看http://www.cnblogs.com/sincoolvip/p ...

  2. 我的第一个 react redux demo

    最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...

  3. 1.类的加载机制_继承类的加载(一个小的Demo)说明

    今天我们先来一个小的Demo来了解类的加载顺序. public class ClassLoaderTest { public static void main(String[] args) { Sys ...

  4. 第一个ajax小demo

    第一个ajax小demo 文章来源:http://blog.csdn.net/magi1201/article/details/44569657

  5. Appium(四):真实机第一个appium程序、模拟器第一个appium程序、查看元素

    1. 真实机第一个appium程序 学完了前面的知识,也将环境搭建好了,接下来我们就正式开始appium的学习了. 在做app自动化的时候,我们肯定是针对某个产品.某个软件进行测试,那么我们一定是先让 ...

  6. 尝试用selenium+appium运行一个简单的demo报错:could not get xcode version. /Library/Developer/Info.plist doest not exist on disk

    业余时间抽空搭了个appium+selenium的环境(mac), 在执行第一个脚本的时候遇到个问题纪录下: could not get xcode version. /Library/Develop ...

  7. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  8. appium 执行demo

    appium很早就了解了,一直没有之际操作过,最近把官网的demo搞下来执行了一遍,还是很有意思的 经过测试是可以跑起来的,不过跑得过程中,输入法需要默认为英文的,如果是中文的码输入的时候有点问题,可 ...

  9. 一起来花5分钟写一个PHP入门Demo

    最近公司招了几个应届毕业生,他们对前端的了解还挺多,但是对后端的技术一无所知,我觉得,作为一个前端攻城狮,如果你有远大的抱负,就应该雨露均沾... 今天我就跟大家讲一讲PHP最基本的入门,至少别人问起 ...

随机推荐

  1. golang对数组进行冒泡排序

    什么是冒泡排序? 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 ...

  2. python 爬虫数据处理字符串时间转换格式方法

    startDate = "2018-10-01"endDate = "2018-10-31" ###字符转化为日期startTime = datetime.da ...

  3. Python扩展库1—numpy

      1 数组对象 创建数组 import numpy as np a = np.arange(10) b = np.arange(2,10,1) #[2,10)步长为1 c = np.linspace ...

  4. scrollIntoView()方法

    该方法用于建立一个锚点,点击锚点,会跳到相应的内容,且该内容头部与浏览器头部平齐 实例: <html> <head> <title>TODO supply a ti ...

  5. promise、async和await之执行顺序

    async function async1(){ console.log('async1 start') await async2() console.log('async1 end') } asyn ...

  6. js-null 、undefined

    注意:null 转为数值时为0,而 undefined 转为数值时为 NaN. Number(undefined) // NaN Number(null) // 0 null 表示"没有对象 ...

  7. TEST mathjax

    这里是第一个公式 $ F = ma^2 $ \[ \text{Reinforcement Learning} \doteq \pi_* \\ \quad \updownarrow \\ \pi_* \ ...

  8. shapefile 转 geojson 文件类型

    http://mapshaper.org/ 从natural earth下载后,扔进去2个文件,就可以了.

  9. ORA-15025 搭建DG环境,restore controlfile报错,提示oracle无法使用ASM存储

    环境说明: #主库RAC环境 #备库RAC环境,操作系统AIX 6.1 数据库版本11.2.0.3 报错说明: #主库备份控制文件,传输至备库,备库restore 报错 本篇文档,分为两大阶段:第一阶 ...

  10. supervisor-program配置

    [program:check_server_state]directory=/sunlight/shellcommand=/usr/bin/sh check_server_state.shautost ...