開源類庫iQuery Android版使用說明

iQuery是一個通用的跨平臺的控件查詢類庫,其語法相似jQuery,但你能夠在iOS、Android、selenium、甚至是桌面GUI程序上使用它。在iQuery以前,要在界面中查詢一個控件,特別是自動化測試用例程序中,是比較麻煩的事情,而iQuery不只能夠用一段簡潔的文本精準定位控件,還爲使用同一個查詢語句執行跨平臺控件查詢提供可能。css

繼上週發佈iQuery iOS版發佈以後,咱們再接再礪完成Android版的開發,你能夠在Android應用裏使用iQuery批量處理和操做界面控件,有興趣的朋友能夠在這裏下載:html

https://github.com/vowei/iQuery/downloadsjava

源碼位置:
https://github.com/vowei/iQuery android

要在Android程序以及Android自動化測試程序中使用iQuery,你須要引入下面幾個包:
antlr-runtime-3.4.jar:用於詞法解析。
iQA.Runtime.jar:iQuery語法解析主程序包。
iQA.Runtime.Instrument.jar:iQuery android插件。git

若是你須要編寫android instrument的UI自動化測試用例的話,還須要在測試用例工程裏添加:
robotium-solo-3.1.jar:用於抓取android UI控件的類庫。github

運行iQuery所須要的依賴包均可以在下面這個地方下載:
https://github.com/vowei/iQuery/tree/master/java/lib app

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

  • 首先建立一個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執行測試用例:

    無標題
  • 更詳細的例子,請參看源碼裏附帶的測試用Android工程和其相關的測試用例。

測試用android工程:https://github.com/vowei/iQuery/tree/master/java/Test/multiplatformdemoproject 函數

相關測試用例:https://github.com/vowei/iQuery/tree/master/java/Test/iQA.Sample.multiplatformdemoprojecttest 測試

不管是iQuery iOS版仍是iQuery Android版本均可擴展的,後面將會介紹擴展iQuery的方法。

相關文章
相關標籤/搜索