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

上次說到已經配好了MonkeyRunner的運行環境,現在講解怎麼進行簡單的MonkeyRunner測試。這個拖了很久纔有時間和心情總結一下。真是計劃趕不上變化啊。

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

MonkeyRunner工具共有三個類:MonkeyRunnerMonkeyDeviceMonkeyImage

一、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')

     這個程序就簡單說這些,另外可以對自己的程序進行優化,可以把不同的測試case封裝到一個方法裏,也可以把一些配置設置成全局變量,然後在不同的類裏進行調用。這些需要簡單瞭解一下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 ,就會出現如下界面:

 


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

 

 

 

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

軟件工具都是這樣,沒有絕對的便利。MonkeyRunner也不例外。

發佈了0 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章