qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          Android monkeyrunner自動(dòng)化測(cè)試

           monkeyrunner測(cè)試主要是通過編寫一個(gè)Python程序去安裝一個(gè)Android應(yīng)用程序或測(cè)試包,運(yùn)行它,向它發(fā)送模擬擊鍵,截取它的用戶界面圖片,并將截圖存儲(chǔ)于工作站上。由于SDK是舊版本,暫時(shí)無法獲取自定義屏幕上的組件焦點(diǎn),所以通過截取屏幕的方式獲取組件的位置坐標(biāo),然后利用觸摸的方式點(diǎn)擊組件。
            關(guān)于monkeyrunner自動(dòng)化測(cè)試網(wǎng)上的例子太多了,而且都是轉(zhuǎn)載的,基本上都是對(duì)官方文檔的翻譯,所以遇到很多問題都無法解決。下面附上一些簡單的例子。
          #導(dǎo)入程序測(cè)試所需要的模塊
          from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
          #連接當(dāng)前對(duì)象,返回一個(gè)MonkeyDevice對(duì)象
          device = MonkeyRunner.waitForConnection()
          #安裝所要測(cè)試的android應(yīng)用程序或測(cè)試包
          device.installPackage('*******.apk')
          #運(yùn)行指定的Activity
          device.startActivity(component='com.mzba.test.TestActivity')
          #觸摸自動(dòng)登錄復(fù)選框
          device.touch(222,388,'DOWN_AND_UP')
          #觸摸記住密碼復(fù)選框
          device.touch(37,421,'DOWN_AND_UP')
          #觸摸登錄按鈕
          device.touch(271,475,'DOWN_AND_UP')
          #測(cè)試暫停3秒鐘
          MonkeyRunner.sleep(3.0)
          #截取屏幕截圖
          result = device.takeSnapshot()
          #將截圖保存至文件
          result.writeToFile('login.png','png')
            不過更新了sdk以后,發(fā)現(xiàn)press方法無法使用了,報(bào)錯(cuò)如下:
            device.press('KEYCODE_DPAD_DOWN','DOWN_AND_UP')  TypeError: press: The 3rd argument is required
            所以要換成另一種方法:
          device.press('KEYCODE_DPAD_DOWN', MonkeyDevice.DOWN_AND_UP)
          更新了SDK的版本,增加了EasyMonkeyDevice的相關(guān)類,已經(jīng)可以利用控件的id來進(jìn)行交互。
          from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
          from com.android.monkeyrunner.easy import EasyMonkeyDevice
          from com.android.monkeyrunner.easy import By
          device = MonkeyRunner.waitForConnection()
          easy_device = EasyMonkeyDevice(device)
          easy_device.startActivity(component='com.xuanwu.etion/.SplashActivity')
          #輸入用戶名
          device.type('mzba')
          #觸摸密碼框,相當(dāng)于獲取焦點(diǎn)
          easy_device.touch(By.id('id/login_edit_pwd'), MonkeyDevice.DOWN_AND_UP)
          #輸入密碼
          device.type('888888')
          #按下返回鍵,相當(dāng)于關(guān)閉輸入法的彈出框
          device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
          #easy_device.touch(By.id('id/login_edit_account'), MonkeyDevice.DOWN_AND_UP)
          #點(diǎn)擊登錄按鈕
          easy_device.touch(By.id('id/login_btn'), MonkeyDevice.DOWN_AND_UP)
            附上官方文檔:
            http://develo...concepts.html

          posted on 2013-12-20 09:23 順其自然EVO 閱讀(332) 評(píng)論(0)  編輯  收藏 所屬分類: android

          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 屏山县| 西昌市| 全州县| 昭通市| 图木舒克市| 松溪县| 宁远县| 镇赉县| 黔西| 枣庄市| 晋中市| 中宁县| 镇平县| 日喀则市| 平顶山市| 隆子县| 武乡县| 泰宁县| 邵阳县| 隆德县| 新巴尔虎右旗| 武邑县| 湖南省| 鹤庆县| 曲周县| 平顺县| 绥江县| 武冈市| 乐业县| 汝城县| 卓资县| 栾城县| 潮安县| 宝山区| 丽水市| 且末县| 钟山县| 冀州市| 永修县| 宣化县| 海盐县|