原文来自:一颗糖果  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. 【转】strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号"int g_cTemplates"

    加入了DirectShow的基类链接库后,如果此时编译就会出现以下编译错误: strmbasd.lib(wxutil.obj) : error LNK2019: 无法解析的外部符号 __imp__ti ...

  2. golang统计出其中英文字母、空格、数字和其它字符的个数

    方法一 通过ASCII码表判断并统计 package main import "fmt" func charactortype() { var s2 string = " ...

  3. Window下部署Maven Nexus

    Nexus下载地址:https://www.sonatype.com/download-oss-sonatype 选择相应的版本下载后,本人下载的是nexus-2.12.0-01-bundle.zip ...

  4. FZU 2273 Triangles 第八届福建省赛 (三角形面积交 有重边算相交)

    Problem Description This is a simple problem. Given two triangles A and B, you should determine they ...

  5. 深度强化学习介绍 【PPT】 Human-level control through deep reinforcement learning (DQN)

    这个是平时在实验室讲reinforcement learning 的时候用到PPT, 交期末作业.汇报都是一直用的这个,觉得比较不错,保存一下,也为分享,最早该PPT源于师弟汇报所做.

  6. php操作mysql几个常用操作

    1.链接数据库 mysql_connet('数据库地址','数据库账号','数据库密码'); 2.选择数据库 mysql_select_db("数据库名"); 3.设置编码 mys ...

  7. 关闭或开启memory_target

    对于Oracle数据库内存参数配置大小,一般满足如下规则 sga_target + pga_aggregate_target < memory_target <=memory_max_ta ...

  8. Python中的基本语法

    #Python的基本语法: #1.了解缩进 #Python中没有{}来表示一个代码块,但是Python使用缩进来完成区别代码框架 #那么在Python中一个缩进一般等于4个空格,当然你也可以使用TAB ...

  9. NOI-1.1-08-字符三角形

    08:字符三角形 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形. 输入 输入只有一行, 包含一个字符. 输出 ...

  10. [LeetCode&Python] Problem 167. Two Sum II - Input array is sorted

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...