用python做自動化測試—Monkeyrunner問題的解決方案
Monkeyrunner的例程google下可以有很多,這里就不在重復了,下面說說大家可能遇到的幾個問題,及解決方案。
1. 點擊button,選擇輸入焦點,只能靠坐標來定位,一旦換手機,坐標完全失效了。
解決方案a: 通過device.getProperty("display.width"),device.getProperty("display.height")得到你調試手機的像素,在新的手機中,通過這2個參數的比例關系,可以得到在新手機的X,Y坐標點。
解決方案b:通過view server查詢ID來定位,這種方法是最好的,肯定不會錯。但很多手機上view server不工作,即使被rooted了(可以通過hierarchyviewer.bat來確認view server是否工作). 破解過程有點下復雜,大家可以參考這里,還是可以破解的。http://blog.apkudo.com/tag/viewserver/
from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.monkeyrunner.easy import By from com.android.hierarchyviewerlib.device import ViewNode easy_device.locate(By.id('id/main_button')) easy_device.touch(By.id('id/main_button'), 'downAndUp') |
2. 測試結果的檢查中,用圖片來比較精確度不高。
很多測試用例的檢查結果中,我們希望同時檢查app的界面是不是我們期望的,但通知欄的電池或者彈出個通知消息不好比較,容易導致結果比較失敗。
解決方案a:通過OCR技術,可以獲取到圖片里的文字。python里面有https://code.google.com/p/pytesser/,當然這個是cpython的,monkeyrunner用的是jython, 無法直接調用cpython的模塊,OCR里面java的開源模塊很多,jython直接調用java非常方便。
解決方案b:還 是通過view server得到界面上內容
hierarchy_viewer = device.getHierarchyViewer() view_node = hierarchy_viewer.findViewById('id/prompt_text_view') text = view_node.namedProperties.get('mText').toString() |
posted on 2014-01-09 10:31 順其自然EVO 閱讀(615) 評論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動化測試學習