selenium-webdriver for android

2012-04-19  王少平 

介绍
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
下载地址:http://developer.android.com/sdk/index.html


配置环境
Android WebDriver测试可以运行在模拟器或真实机器上。

安装模拟器
创建模拟器,Android SDK下载地址:http://developer.android.com/intl/ja/guide/developing/devices/managing-avds.html
或者:http://developer.android.com/guide/developing/devices/emulator.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 serverAndroid 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 browsersIdeal 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

待续。。。
欢迎来拍砖!!
1316°/13167 人阅读/0 条评论 发表评论

登录 后发表评论