[Selenium] 搭建 Android WebDriver 环境
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 环境的更多相关文章
- 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)
——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...
- mac os 下搭建android开发环境
mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...
- 在Eclipse下搭建Android开发环境教程
我们昨天向各位介绍了<在NetBeans上搭建Android SDK环境>,前不久也介绍过<在MyEclipse 8.6上搭建Android开发环境>, 都受到了读者的欢迎.但 ...
- 第二章 搭建Android开发环境
这一章为我们讲解了如何搭建Android开发环境. 首先要了解的是Android底层开发需要哪些工具:搭建android应用程序开发环境.android NDK开发环境和交叉编译环境,前两个用来测试L ...
- 第二章 搭建Android开发环境--读书笔记
俗话说,工欲善其事,必先利其器,对于Android驱动开发来说,首先我们要做的就是搭建Android开发环境,我们首先要配置Linux驱动的开发环境,接着还得配置开发Android应用程序以及Andr ...
- 单机搭建Android开发环境(三)
单机搭建Android开发环境,第一篇重点介绍了如何优化Windows 7系统,以提高开发主机的性能并延长SSD的使用寿命.第二篇重点介绍了基于VMWare安装64位版的Ubuntu 12.04,并安 ...
- 单机搭建Android开发环境(一)
老话,工欲善其事必先利其器.为了学习安卓系统开发,我下了血本,更换了电脑.俗语,磨刀不误砍柴工,好钢用在刀刃上,为了发挥新本的最大潜能,我花费了很长时间去做配置和优化,都感觉有点偏执了.不过,从到目前 ...
- 使用集成的ADT bundle来搭建android开发环境
android开发环境的搭建 本文使用集成的ADT bundle来搭建android开发环境,所谓bundle就是谷歌搭建好的一个eclipse+sdk集成环境.需要下载的软件列表如下: 1.ADT ...
- 初识Android && 搭建Android开发环境
搭建Android开发环境需要的工具: JDK(Java Development Kit) Eclipse Android Sdk(Software Development Kit) ADT (And ...
随机推荐
- Linux主机被SSH精神病(Psychos)暴力攻破后成为肉鸡的攻防过程
近日公司局域网突然变得非常慢,上网受到很大影响,不仅仅是访问互联网慢,就连访问公司内部服务器都感到异常缓慢.于是对本局域网网关进行测试: $ ping 10.10.26.254 发现延时很大, ...
- Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) E. Vasya and Good Sequences
题目链接 官网题解写的好清楚,和昨晚Aguin说的一模一样…… 这题只和每个数1的个数有关,设每个数1的个数的数组为$b$,就是首先一段如果是好的,要满足两个条件: 1.这一段$b$数组和为偶数,因为 ...
- .net core webapi jwt 更为清爽的认证 ,续期很简单
我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下 jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于中间件,我的处理方式是将获取token放到api的一个具体的co ...
- Unity 3D 之通过序列化来存档游戏数据
我们在使用u3d开发一些单机游戏的过程中,都会涉及到游戏数据的存单和加载.一般情况下,如果存储的数据不复杂,我们就可以用PlayerPrefs,但有时涉及到的数据更加复杂,使用PlayerPrefs难 ...
- codevs——1065 01字符串
1065 01字符串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 输出仅有0和1组成的长度为n的字符串, ...
- pyserial安装
参考网址:pyserial.sourceforge.net/pyserial.html#installation Download the archive from http://pypi.pytho ...
- JStorm学习
一.简介 JStorm是一个分布式实时计算引擎.JStorm是一个类似于Hadoop MapReduce的系统,用户按照指定的接口实现一个任务,然后将这个任务交给JStorm系统,JStorm将这个任 ...
- java多线程02-----------------synchronized底层实现及JVM对synchronized的优化
java多线程02-----------------synchronized底层实现及JVM对synchronized的优化 提到java多线程,我们首先想到的就是synchronized关键字,它在 ...
- Java中String字符串toString()、String.valueOf()、String强转、+ ""的区别
Object#toString(): Object object = getObject(); System.out.println(object.toString()); 在这种使用方法中,因为ja ...
- Maven插件开发教程收集(待实践)
官方教程:http://maven.apache.org/plugin-developers/index.html http://blog.csdn.net/csfreebird/article/de ...