第一个appium的Demo
原文来自:一颗糖果 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的Demo的更多相关文章
- appium跑demo简单实例讲解
安装appium,设置 demo.pyfrom appium import webdriver #要装webdriver,方法查看http://www.cnblogs.com/sincoolvip/p ...
- 我的第一个 react redux demo
最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...
- 1.类的加载机制_继承类的加载(一个小的Demo)说明
今天我们先来一个小的Demo来了解类的加载顺序. public class ClassLoaderTest { public static void main(String[] args) { Sys ...
- 第一个ajax小demo
第一个ajax小demo 文章来源:http://blog.csdn.net/magi1201/article/details/44569657
- Appium(四):真实机第一个appium程序、模拟器第一个appium程序、查看元素
1. 真实机第一个appium程序 学完了前面的知识,也将环境搭建好了,接下来我们就正式开始appium的学习了. 在做app自动化的时候,我们肯定是针对某个产品.某个软件进行测试,那么我们一定是先让 ...
- 尝试用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 ...
- 无废话WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- appium 执行demo
appium很早就了解了,一直没有之际操作过,最近把官网的demo搞下来执行了一遍,还是很有意思的 经过测试是可以跑起来的,不过跑得过程中,输入法需要默认为英文的,如果是中文的码输入的时候有点问题,可 ...
- 一起来花5分钟写一个PHP入门Demo
最近公司招了几个应届毕业生,他们对前端的了解还挺多,但是对后端的技术一无所知,我觉得,作为一个前端攻城狮,如果你有远大的抱负,就应该雨露均沾... 今天我就跟大家讲一讲PHP最基本的入门,至少别人问起 ...
随机推荐
- JAVA_全局配置文件(配置网址,url等等)_第一种方式
一.概述 当使用httpClient调其他系统接口时,需要通过地址来发送post请求. 这时我们有不同的环境,那么就有两个问题. 1是地址不能写在代码中,而是要写在配置文件. 2是不同环境配置文件应该 ...
- HDU 1166 敌兵布阵(线段树点更新区间求和裸题)
Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...
- CHAP认证(双向)
实验要求:掌握CHAP认证配置 拓扑如下: R1enable 进入特权模式configure terminal 进入全局模式hostname R1 设置主机名 interface s0/0/0 ...
- SQL注入之Sqli-labs系列第十四关(基于双引号POST报错注入)
开始挑战第十四关(Double Injection- Double quotes- String) 访问地址,输入报错语句 ' '' ') ") - 等使其报错 分析报错信息 很明显是 ...
- 【tomcat】启动报错:Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"] java.lang.Exception: Socket bind failed 和java.net.BindException: Address already in use: JVM_Bind错误解决
背景:[新手] 将开发机子上的Tomcat连同其中的项目,一起拷贝到服务器上,启动tomcat的start.bat,然后报错如下: 问题1: Failed to initialize end poin ...
- Vim正则表达式匹配替换字符串
/********************************************************************** * Vim正则表达式匹配替换字符串 * 说明: * 用V ...
- Linux OTG当串口、网口、U盘
/********************************************************************************* * Linux OTG当串口.网口 ...
- 小白学习前端---第一天 了解HTML
一.HTML的结构 1.1 html文档主要包含两个部分:头区域和实体区域. 1.2 html的三个主要标签:<html>.<head>.<body>.<ht ...
- Unity 3D委托entrust
Unity 3D委托的多种用法 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- djang 过滤器和装饰器
Django自定义过滤器 Django 自定义过滤器, 在项目目录中建立templatetags目录. 建立my_filter.py 文件, 导入模板模块 :from django import te ...