1.安装 Android SDK

到如下网址下载 Android SDK

http://developer.android.com/sdk/index.html

2.创建 Android 虚拟设备

解包刚下载的 SDK 压缩包,进入 tools 目录,然后启动 AVD 管理器( Android Virtual Device Manager)

$ cd adt-bundle-mac-x86_64-20130917/sdk/tools

$ ./android avd

3.新建一个 Android 虚拟设备

在 AVD 管理器上单击 New 新建一个  Android 虚拟设备。新的  Android 虚拟设备创建成功后,就可以启动他了。具体步骤参考  Android 开发者官网

4.设置  Android 虚拟设备

两种方式运行  Android WebDriver ,一种基于 RemoteWebDriver Server,另一种基于 Android Test Framework,他们优缺点如下:

RemoteWebDriver Server Android Test Framework
可用任意Selenium 支持绑定的编程语言 只能使用 Java 
运行速度慢,因为每个命令都是基于 HTTP 的 RPC 方式 运行速度快,因为测试直接在模拟器或真实设备上
可移植性更强,同一套代码测试多种不同浏览器 已经在使用 Android Test Framework 且不打算用同一套代码测试其他浏览器

这里着重介绍RemoteWebDriver Server 方式,此方式包括服务器端和客户端2部分

1)客户端

一般指使用 JUnit 或 TestNG 组织的测试用例代码,运行的时候可选择直接在 IDE 中运行,也可通过命令行方式运行

2)服务器端

一般指运行在Android 设备上,且包含了 HTTP 服务器的应用程序

在运行测试用例时,客户端的每个 WebDriver 命令都会发送一个采用 JSON 协议的 RESTful HTTP 请求道服务器端。而远端的HTTP 服务器会将用户端发送过来的请求转发给 Android WebDriver, 并将请求结果发送回客户端。具体JSON 协议规范见:http://code.goole.com/p/selenium/wiki/JsonWireProtocol

5.安装并设置 Android WebDriver Server

1)无论 Android 模拟器还是 Android 真实设备,都有一个序列号 serial ID,通过如下命令先获取模拟器或设备的 serial ID,此例中序列号为 f14c451c

$ cd adt-bundle-mac-x86_64-20130917/sdk/platform-tools/

$ ./adb devices

List of devices attached

f14c451c device

2)下载 Android server 的 apk 文件,下载地址: https://code.google.com/p/selenium/downloads/list

3)在安装Android-server.apk 文件到 Android 模拟器或真实设备上之前,应确保 Android  系统允许安装非 Android 官方市场下载的应用程序,安装命令:

$ ./adb -s<serialId> -e install -r android-server.apk

结合本例具体序列号和 Android Server 的版本而言,命令执行记过如下:

$ ./adb -s f14c451c  -e install -r android-server-2.32.0.apk

...

success

4)有2种方式启动 Android WebDriver 应用程序,一种是从 Android 模拟器或设备的 UI 上启动,还一种是从命令启动,如下:

$ ./adb -s<serialId> shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity

结合本例具体序列号而言,命令执行结果如下:

$ ./adb -sf14c451c   shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity

Starting:Intent{act = android.intent.action.MAIN  cmp = org.openqa.selenium.android.app/.MainActivity}

5)如果需要进入 debug 模式,可打开此选项,命令如下:

$ ./adb -s<serialId> shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity -e debug true

结合本例具体序列号而言,命令执行结果如下:

$ ./adb -s sf14c451c shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity -e debug true

Starting:Intent{act = android.intent.action.MAIN  cmp = org.openqa.selenium.android.app/.MainActivity(has extras)}

6)设置端口转发规则

$ ./adb -s<serialId> forward tcp:8080 tcp:8080

结合本例具体序列号而言,设定本地端口为8888,命令执行结果如下:

$ ./adb -s sf14c451c  forward tcp:8888 tcp:8080

这样就完成了 Android WebDriver Server 的安装和设置,接着就可以从本机的如下地址来查看测试代码 与  Android WebDriver Server 进行交互的状态:

http://localhost:8888/wd/hub/status

以下方式可检查确认  Android WebDriver Server安装并设置正确:
1)在浏览器中 http://localhost:8888/wd/hub/status 查看端口转发是否成功,正常会显示 {status:0}

2)使用 telnet 命令: $ telnet localhost 8888

3)使用 curl 命令: $ curl http://localhost:8888/wb/hub/status

4)使用 wget 命令: $ wget http://localhost:8888/wb/hub/status

接下来就可运行测试用例,有几个地方需要注意:

1)确保 Android 手机上 ”开发人员选项“ 中的 ”USB 调试“、”保持唤醒状态“ 和 ”允许模拟地点“ 处于打开状态

2)确保 Android 手机上 ”USB 数据存储“ 处于关闭状态,否则会导致执行测试用例时出现不可操作 sdcard 的错误提示。

测试用例示例:

import org.openqa.selenium.android.AndroidDriver;

...

//启动 Android WebDriver,并制定消息的转发地址为如下地址8888端口

WebDriver driver = new AndroidDriver("http://localhost:8888/wd/hub");

driver.get("www.1.com");

String url = driver.getCurrentUrl();

driver.close();

[Selenium] 搭建 Android WebDriver 环境的更多相关文章

  1. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  2. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

  3. 在Eclipse下搭建Android开发环境教程

    我们昨天向各位介绍了<在NetBeans上搭建Android SDK环境>,前不久也介绍过<在MyEclipse 8.6上搭建Android开发环境>, 都受到了读者的欢迎.但 ...

  4. 第二章 搭建Android开发环境

    这一章为我们讲解了如何搭建Android开发环境. 首先要了解的是Android底层开发需要哪些工具:搭建android应用程序开发环境.android NDK开发环境和交叉编译环境,前两个用来测试L ...

  5. 第二章 搭建Android开发环境--读书笔记

    俗话说,工欲善其事,必先利其器,对于Android驱动开发来说,首先我们要做的就是搭建Android开发环境,我们首先要配置Linux驱动的开发环境,接着还得配置开发Android应用程序以及Andr ...

  6. 单机搭建Android开发环境(三)

    单机搭建Android开发环境,第一篇重点介绍了如何优化Windows 7系统,以提高开发主机的性能并延长SSD的使用寿命.第二篇重点介绍了基于VMWare安装64位版的Ubuntu 12.04,并安 ...

  7. 单机搭建Android开发环境(一)

    老话,工欲善其事必先利其器.为了学习安卓系统开发,我下了血本,更换了电脑.俗语,磨刀不误砍柴工,好钢用在刀刃上,为了发挥新本的最大潜能,我花费了很长时间去做配置和优化,都感觉有点偏执了.不过,从到目前 ...

  8. 使用集成的ADT bundle来搭建android开发环境

    android开发环境的搭建 本文使用集成的ADT bundle来搭建android开发环境,所谓bundle就是谷歌搭建好的一个eclipse+sdk集成环境.需要下载的软件列表如下: 1.ADT ...

  9. 初识Android && 搭建Android开发环境

    搭建Android开发环境需要的工具: JDK(Java Development Kit) Eclipse Android Sdk(Software Development Kit) ADT (And ...

随机推荐

  1. SGU103+POJ 1158 最短路/dp

    题意:一个无向图,求起点到终点最少时间,限制:每个路口有灯,要灯颜色一样才能过去,灯之有俩种颜色,周期 变化,给定每个灯初态,时间. 思路:开始就想到直接DP,方程dp[k]=dp[i]+distan ...

  2. Working with multiple environments

    ASP.NET Core引入了对多个环境(例如开发,暂存和生产环境)的支持. 可以用环境变量来指示应用程序正在运行的环境,从而让app来做相应的配置. Development, Staging, Pr ...

  3. springBoot 跨域处理

    首先喝水不忘挖井人,博客参考:https://www.cnblogs.com/nananana/p/8492185.html 方式一:新增一个configration类 或 在Application中 ...

  4. 前端MVC Vue2学习总结(九)——Vuex状态管理插件

    一.概要 1.1.Vuex定义与注意事项 Vuex是为vue.js框架更好的管理状态而设计一个插件.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的 ...

  5. [Testing] Config jest to test Javascript Application -- Part 3

    Run Jest Watch Mode by default locally with is-ci-cli In CI, we don’t want to start the tests in wat ...

  6. 课程的正确步调——Leo鉴书74

    <Leo鉴书(第1辑)>已登陆百度阅读.今后还将不断更新,免费下载地址:http://t.cn/RvawZEx 本人第一次站上讲台是1999年,那会儿从中关村回到天津,在一个给成人做计算机 ...

  7. WheelView实现省市区三级联动(数据库实现版本号附带完整SQL及数据)

    近期在实现收货地址功能,用到了省市区三级联动效果,网上找到一般都是xml或json.数据源陈旧改动麻烦.改动了一下使用数据库方式实现了一下 数据源解决.因为数据量比較大通过初始化批量运行SQL的方式不 ...

  8. C++中的链式操作

    代码编译环境:Windows7 32bits+VS2012. 1.什么是链式操作 链式操作是利用运算符进行的连续运算(操作).它的特点是在一条语句中出现两个或者两个以上相同的操作符,如连续的赋值操作. ...

  9. 【转载】FAT12格式的引导程序(2)

     1.用WinImage来写入到引导区的详细步骤: 启动WinImage后,打开“文件”菜单,单击菜单中的“打开”命令. 选择之前保存的磁盘镜像文件“boot.img”或者“boot.ima”. 打开 ...

  10. java中类加载顺序(深入Java)

    未涉及虚拟机 0.<init>与<clinit>的区别 1.类的加载过程 2.类的使用方式 3.类的加载来源 4.重载之泛型参数不同可以吗 5.参考 引子 记得上次中秋一哥们写 ...