Android WebDriver 允许运行自动化end-to-end的测试,以确保你的程序可以正常在Android浏览器上工作。Android WebDriver支持所有核心的WebDriver APIs,并且还支持移动通信和HTML5 APIs。Android WebDriver模块提供了与人的交互,如用手指轻点,轻摇,手指轻滑和长时间压下。它可以旋转显示和HTML5特性进行交互,如本地存储,session和应用程序缓存。
我们要尽可能的去模拟用户与浏览器之间的交互。所以,我们在使Android WebDriver运行之前,WebView要配置的与Android broweser一样。与页面的交互Android WebDriver用本地触摸和键盘事件。调用DOM和使用JavaScript Atoms库。
支持平台
目前的apk将支持Gingerbread(2.3.x),Honeycomb(3.x),Ice Cream Sandwich(4.0.x)和之后的版本,注意:在Gingerbread模拟器上的butg会使WebDriver崩溃。
可能支持Froyo(2.2)的版本是2.16。
Android 的(重要)版本一直都是食物名称命名的,比如Donut(1.6)、Eclair(2.1)、FroYo(2.2)、Honeycomb(3.0)、Ice Cream Sandwich(4.0)
有用的链接(跃墙可见)
安装Android SDK
配置环境
Android WebDriver测试可以运行在模拟器或真实机器上。
安装模拟器
创建模拟器,Android SDK下载地址:http://developer.android.com/intl/ja/guide/developing/devices/managing-avds.html
以下指令是在命令行上使用:
第一,我们要创建一个AVD(Android Virtual Device 安卓虚拟器)
$cd ~/android_sdk/tools/
$./android create avd -n my_android -t 12 -c 100M
-n: 指定AVD的名字
-t: 指定平台目标。查看目标列表,./androd list targets
要确保你所选的SDK平台要支持目标等级。
-c: SD卡的储存大小
这时会弹出“Do you wish to create a custom hardware profile [no]”输入“no”。
现在启动模拟器。
$./emulator -avd my_android &
安装设备
用USB线把Android设备和机器进行连接。
既然我们把测试环境配置好了,让我们看看如何写测试用例,有两种方式:
1.用remote WebDriver server
2.用Android test framework
下表进行对比
Android WebDriver using the remote server | Android WebDriver using the Android test framework |
Tests can be written in any supported language binding (Java, Python, Ruby, etc.) | Tests can only br written in Java |
Runs slower because every command makes extra RPCs (HTTP requests/responses) | Runs fasters because the tests are on the device |
Ideal if you use the same WebDriver tests on other browsers | Ideal if you don't use the same tests on other browsers and if you already use the Android test framework |
用remote server
此方法需要客户端和服务端。客户端可以用IDE或者命令行来进行与junit组合测试。服务端是一个Android程序,包含了HTTP服务。当我们运行测试时,所有的WebDriver命令都会创建一个HTTP请求,以JSON形式发送给服务。remote server代理会将Android WebDriver请求,并且还将返回响应。
安装WebDriver APK
所有的装置和模拟器都需要一个ID。用以下命令,可以在命令行中得到这个ID:
$~/adnroid_sdk/platform-tools/adb devices
下载Android服务包:http://code.google.com/p/selenium/downloads/list (有时要越墙)
安装包:$./adb -s <ID> -e install -r android-server.apk
你的安装包如果来自Android Market就需要确认,在“设置->应用程序”选择“未知数据”
在命令行中或者通过装置的UI启动Android WebDriver程序.
$./adb -s <ID> shell am start -a android.intert.action.MAIN -n org.openqa.selenium.android.app/.ManiActivity
你也可以启动debug模式,可以得到更详细的日志:
$./adb -s <ID> shell am start -a android.intert.action.MAIN -n org.openqa.selenium.android.app/.ManiActivity -e debug true
现在我们来设置一个通信的端口,用以机器和装置的通信。
$./adb -s <ID> forward tcp:8080 tcp:8080
待续。。。
欢迎来拍砖!!