開源類庫iQuery Android版使用說明

來源:互聯網
上載者:User

是一個通用的跨平台的控制項查詢類庫,其文法類似jQuery,但你可以在iOS、Android、selenium、甚至是案頭GUI程式上使用它。在iQuery之前,要在介面中查詢一個控制項,特別是自動化測試案例程式中,是比較麻煩的事情,而iQuery不僅可以用一段簡潔的文本精準定位控制項,還為使用同一個查詢語句執行跨平台控制項查詢提供可能。

 要在Android程式以及Android自動化測試程式中使用iQuery,你需要引入下面幾個包:
antlr-runtime-3.4.jar:用於詞法解析。
iQA.Runtime.jar:iQuery文法解析主程式包。
iQA.Runtime.Instrument.jar:iQuery android外掛程式。

如果你需要編寫android instrument的UI自動化測試案例的話,還需要在測試案例工程裡添加:
robotium-solo-3.1.jar:用於抓取android UI控制項的類庫。

 

下面逐步介紹在eclipse的android自動化UI測試工程中使用iQuery的方法:


首先建立一個android自動化測試工程,並在AndroidManifest.xml裡指明要測試的Android程式的package名和應用的主Activity名。


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cc.iqa.studio.demo.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="cc.iqa.studio.demo" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
    </application>

</manifest>將antlr和robotium的依賴包加入Build Path:

 

建立一個類(測試案例或者其它都可以),在源檔案裡加入以下幾個命名空間:

import org.antlr.runtime.*;
import cc.iqa.iquery.*;
import cc.iqa.iquery.android.*;
上面,org.antlr.runtime用於引入詞法解析的一些類(可選引用);cc.iqa.iquery用於引入iQuery for Java的主程式;而cc.iqa.iquery.android則用於引入iQuery android外掛程式的相互關聯類型。

如果你是編寫自動化的Instrument測試案例,可能還需要引入下面的命名空間:

import com.jayway.android.robotium.solo.*;
com.jayway.android.robotium.solo是用來引入基於Instrument的UI自動化的類庫。

使用iQuery.query靜態函數從一個控制項開始執行iQuery查詢,iQuery的文法說明請參見文章類jQuery selector的控制項查詢iQuery開源類庫介紹:

List<SoloTreeNode> result = iQuery.query(
new SoloTreeNode(_solo.getCurrentViews().get(0)),
    "LinearLayout >> TextView [mText = 'Down Under']");

parser.query返回的結果即是滿足第5步中iQuery過濾條件的控制項集合:

Assert.assertEquals(2, result.size());

完整的測試案例代碼如下:

public void test簡化後的API() throws Exception {
List<SoloTreeNode> result = iQuery.query(
new SoloTreeNode(_solo.getCurrentViews().get(0)),
    "LinearLayout >> TextView [mText = 'Down Under']");
Assert.assertEquals(2, r1.size());               
}如果有語法錯誤的話,iQuery.query會拋出一個iQueryParseException異常,捕捉該異常,調用其getErrors函數擷取語法錯誤的詳細描述。

e.getErrors();在eclipse裡按右鍵測試工程,選擇Run As -> Android JUnit Test執行測試案例:

 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.