公司产品的业务已经发展到了移动端,开发选型已经结束,决定使用phonegap作移动端的web应用开发平台。考虑到业务的复杂与多样,移动端的测试一样须要自动化。在网上看了不少,最终锁定了3个移动端测试工具:Selendroid,Appium,Robotium。之因此选择他们3个,是由于团队已经有了以Selenium为基础的测试框架,而这三个工具与Selenium能够说一脉相承。html
基于phonegap的混合型app(hybrid app)web应用移动端自动化测试java
Selendroid(放弃)android
放弃Selendroid的缘由是在按照官网教程操做后,运行测试时,报错,拿着报错在网上查询,结果都没有解决。资料少的可怜,后来看到Appium中集成了Selendroid后,果断放弃。ios
Robotium(放弃)web
其实Robotium在尝试的过程当中是最顺利的一个,功能也强大。app
但其只支持Android设备,并且其以Android Test工程测试的方式很难集成到公司团队已有的框架中,因此也放弃了。框架
可是仍然会关注其发展,社区活跃,功可以精深有不少能够借鉴的地方。在Appium的研究过程当中也起了很大的做用。maven
Appium(选中)工具
Appium支持ios和android设备,支持hybrid app,集成了Selendroid,易于集成到公司现有框架中,社区正在造成,文档资料也在丰富中。测试
在尝试的过程当中虽有曲折,但最后也顺利实现了。
Appium
官方网址:http://appium.io/
中文社区:http://testerhome.com/
下载地址(由testerhome社区提供):http://pan.baidu.com/s/1jGvAISu#dir
1. 下载最新版本AppiumServer 1.2.0,解压后,进入目录下找到Appium.exe,运行便可,此程序做为Appnium与被测设备之间通信的服务端
出现以下界面说明启动成功
2. 将真机链接到PC端
3. 我使用Eclipse做为开发IDE,创建一个maven工程appium-demo,在pom中引用了公司框架中的Selenium核心工程,这样能够省去添加Selenium依赖的过程
,同时在maven的中央库中找到Appium包,并引用
Appium的maven引用
GroupId:io.appium
ArtifactId:java-client
Version:1.5.0
4. 创建工程后,就能够写测试代码了,在工程中创建一个Junit Test类Test1.java,代码以下:
package com.example.hello;
import io.appium.java_client.AppiumDriver;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
@RunWith(BlockJUnit4ClassRunner.class)
public class Test1 extends TestCase {
}
工程结构以下
5. 保持被测设备为解锁状态,虽然Appium有一个unlock的功能,但有时不起做用,因此最好仍是将锁屏关闭。运行Test1.java,获得以下结果