qileilove

          blog已經(jīng)轉移至github,大家請訪問 http://qaseven.github.io/

          android 自動化測試之MonkeyRunner學習(二)

           上次說到已經(jīng)配好了MonkeyRunner的運行環(huán)境,現(xiàn)在講解怎么進行簡單的MonkeyRunner測試。這個拖了很久才有時間和心情總結一下。真是計劃趕不上變化啊。

            就不說廢話了。http://developer.android.com/tools/help/MonkeyDevice.html ,這個地址是android上的MonkeyRunner官方文檔地址。上面關于MonkeyRunner的一些方法說的很詳細。本篇不是詳細解釋MonkeyRunner方法的文章,只是根據(jù)我的理解,結合自己的一個例子講解一下怎么使用MonkeyRunner寫測試程序。

            MonkeyRunner工具共有三個類:MonkeyRunner、MonkeyDevice、MonkeyImage。

            一、MonkeyRunnner類:

            這個類主要用于把MonkeyRunner連接至真機或者模擬器,另外有個顯示提示信息的alert方法和一個選擇方法比較常用。

            二、MonkeyImage類:

            這個類主要是測試過程中,用來保存測試截圖,把圖片保存成各種格式,并且可以比較兩個MonkeyImage對象。

            主要常用的有兩個方法:writeToFile (string path, string format) ,這個是保存截圖的位置,和命名,可以把圖片保存到sdcard里面,也可以保存到電腦里面;sameAs (MonkeyImage other, float percent) ,這個用來比較兩個截圖是否相同,結果為boolean值。

            三、MonkeyDevice類:

            這個類的方法就多了一下,主要提供了安裝和卸載程序包、啟動一個活動及操作鍵盤等事件的方法。像里面的startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 啟動一個應用,press (string name, dictionary type)點擊控件 ,touch (integer x, integer y, integer type)點擊控件(通過坐標定位) ,drag (tuple start, tuple end, float duration, integer steps) 拖拉控件等等方法比較常用。

            MonekeyRunner這個測試工具用起來不算太難,下面給出一段代碼簡單解釋一下:

            FetionTest.py

            #coding=utf-8    Python程序的第一句,添加這句使注釋支持中文

            # 導入需要的MonkeyRunner的包,也可以是自己寫的類,如果文件很多的話

            from  com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage

            #連接真機,里面要寫正確自己的真機對應的名字,cmd下命令下,可以用adb devices 看到

            devices1=MonkeyRunner.waitForConnection(5,"1234567890ABCDEF")

            #連接模擬器

            devices2=MonkeyRunner.waitForConnection(5,"emulator-5554")

            #啟動飛信的主界面,這是我測的飛信程序,里面主要是配好飛信的包名和啟動Activity

            devices1.startActivity
            (component = 'cn.com.fetion/.android.ui.activities.StartActivity')
            devices2.startActivity
            (component = 'cn.com.fetion/.android.ui.activities.StartActivity')

            #休眠8秒,便于帳號的登錄

            MonkeyRunner.sleep(8.0)

            #點擊我的好友一欄,這里使用的是坐標方法

            devices1.touch(202,258,"DOWN_AND_UP")

            #選中好友

            devices1.touch(222,326,"DOWN_AND_UP")
            devices1.touch(442,325,"DOWN_AND_UP")

            # 點擊“加入黑名單”

            devices1.touch(223,563,"DOWN_AND_UP")

           # 下面是進行截圖,和保存圖片

            result1 = device1.takeSnapshot()
            result1.writeToFile('E:\slack01.png','png')

            #點擊返回鍵,可以找到模擬器上任何一個建對應的關鍵值,這個在官方文檔里可以查到

            device1.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
            result2 = device1.takeSnapshot()
            result2.writeToFile('E:\slack02.png','png')

            這個程序就簡單說這些,另外可以對自己的程序進行優(yōu)化,可以把不同的測試case封裝到一個方法里,也可以把一些配置設置成全局變量,然后在不同的類里進行調(diào)用。這些需要簡單了解一下Python的編程知識。

            下面說一個比較好用的獲取坐標的工具。就是用來獲取真機上坐標的工具,當我們點擊真機上的空間時,能顯示真機上的點擊點的坐標。

            這個是一個可以自己定義的python文件,只有幾句話:

            from com.android.monkeyrunner import MonkeyRunner as mr
            from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder

            # 里面添加你的真機的名字

            device = mr.waitForConnection(5,"MSM8225QRD5")
            recorder.start(device)

            比如,我把它定義為monkey_recorder.py, 然后放在G盤,在cmd下運行 monkeyrunner monkey_recorder.py ,就會出現(xiàn)如下界面:

            當我們在這個工具上點擊時,真機也會跟著執(zhí)行,并且會顯示每一步我們點擊的位置的坐標,比如,我點擊打開音樂播放器會記錄如下:

            這個工具的好只有處你用過幾次才知道的,呵呵,反正有些應用程序里很小的圖標只能通過坐標獲取點擊事件,這個工具的優(yōu)勢就顯示出來了。另外,需要注意,這個是不能用來獲取模擬器坐標的,模擬器上的坐標只有自己下個截圖工具,來量取坐標了。這一點確實很蛋疼。

            軟件工具都是這樣,沒有絕對的便利。MonkeyRunner也不例外。呵呵,這一次就寫這么多吧,這個工具簡單的使用介紹的也差不多了,更多的還需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。

          相關鏈接:

          posted on 2013-07-03 10:45 順其自然EVO 閱讀(2363) 評論(0)  編輯  收藏 所屬分類: android

          <2013年7月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 莆田市| 合江县| 罗山县| 多伦县| 武定县| 通辽市| 沧源| 巴彦淖尔市| 临夏县| 应用必备| 汶上县| 吴桥县| 宁化县| 琼结县| 枣庄市| 德格县| 两当县| 沁源县| 万年县| 大理市| 同心县| 融水| 安乡县| 西昌市| 沾化县| 同仁县| 石景山区| 丽水市| 托里县| 景宁| 陕西省| 闵行区| 洪雅县| 吉林市| 麻栗坡县| 娱乐| 明光市| 宣恩县| 潞城市| 嘉鱼县| 城步|