移動端混合型App(hybrid app)自動化測試選型與實踐

來源:互聯網
上載者:User

標籤:android   des   style   blog   http   java   color   使用   

背景

  公司產品的業務已經發展到了移動端,開發選型已經結束,決定使用phonegap做移動端的web應用開發平台。考慮到業務的複雜與多樣,移動端的測試同樣需要自動化。在網上看了很多,最終鎖定了3個移動端測試載入器:Selendroid,Appium,Robotium。之所以選擇他們3個,是因為團隊已經有了以Selenium為基礎的測試架構,而這三個工具與Selenium可以說一脈相承。

目標

  基於phonegap的混合型app(hybrid app)web應用移動端自動化測試

選型過程

Selendroid(放棄)

放棄Selendroid的原因是在按照官網教程操作後,運行測試時,報錯,拿著報錯在網上查詢,結果都沒有解決。資料少的可憐,後來看到Appium中整合了Selendroid後,果斷放棄。

 

Robotium(放棄)

其實Robotium在嘗試的過程中是最順利的一個,功能也強大。

但其只支援Android裝置,而且其以Android Test工程測試的方式很難整合到公司團隊已有的架構中,所以也放棄了。

但是仍然會關注其發展,社區活躍,功能夠精深有很多可以借鑒的地方。在Appium的研究過程中也起了很大的作用。

 

Appium(選中)

Appium支援ios和android裝置,支援hybrid app,整合了Selendroid,易於整合到公司現有架構中,社區正在形成,文檔資料也在豐富中。

在嘗試的過程中雖有曲折,但最後也順利實現了。

混合型app以Appium搭建自動化測試開發環境

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 {    private AppiumDriver driver;    @Before    public void start() throws MalformedURLException {        // 使用phonegap打包的hybrid app路徑        String apppath = "D:\\Work\\codes\\hands\\hands-hello-phonegap\\platforms\\android\\bin\\HelloWorld.apk";        // 初始化AppniumDriver        DesiredCapabilities capabilities = new DesiredCapabilities();        capabilities.setCapability("deviceName", "NX403A");// 真機測試android裝置        capabilities.setCapability("platformVersion", "4.2.2");// 真機android版本為4.2.2        capabilities.setCapability("platformName", "Android");// 真機為android系統        capabilities.setCapability("app", apppath);// 被測app apk包的位置        capabilities.setCapability("appPackage", "com.example.hello");// 被測app的Activity類所在包        capabilities.setCapability("appActivity", ".HelloWorld");// 被測app的Activity類        capabilities.setCapability("automationName", "selendroid");// 因為真機為4.2版本,所以使用selendroid        // http://127.0.0.1:4723/wd/hub地址就是AppiumServer的地址        driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),                capabilities);    }    @Test    public void main() {        try {            Set<String> contextNames = driver.getContextHandles();            for (String contextName : contextNames) {                System.out.println(contextName); // 用於返回被測app是NATIVE_APP還是WEBVIEW,如果兩者都有就是混合型App            }            Thread.sleep(5000);// 等它一會            driver.context("WEBVIEW_0");// 讓appium切換到webview模式以便尋找web元素            WebElement text_baidusearch = driver.findElement(By.id("word"));            text_baidusearch.click();// 點擊百度的搜尋輸入框(web元素)            /*             * appium不支援中文輸入 參考了robotium的以js方式為元素直接設定value的做法             * 利用Selenium中Webdriver執行js方法實現中文輸入             */            JavascriptExecutor jse = (JavascriptExecutor) driver;            jse.executeScript("document.getElementById(‘word‘).value=‘IME‘");            Thread.sleep(10000);// 等一會觀察下效果        } catch (InterruptedException e) {            e.printStackTrace();        }    }    @After    public void stop() {        driver.quit();    }}

工程結構如下

5. 保持被測裝置為解鎖狀態,雖然Appium有一個unlock的功能,但有時不起作用,所以最好還是將鎖屏關閉。運行Test1.java,得到如下結果

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.