1. 程式人生 > >夜神模擬器的安裝與使用

夜神模擬器的安裝與使用

轉載:http://www.mamicode.com/info-detail-1537597.html

    安卓開發環境搭建中,我們建立並啟動了eclipse自帶的安卓模擬器,該模擬器不僅啟動慢,而且在使用過程中的反應速度也是出奇的差,經常出現卡機現象。為了解決這種現象,因此,我們又尋找到了更加合適的模擬器-夜神模擬器。該模擬器除了安裝包有點大之外,其速度是特別快,基本和真機速度無差,甚至是還要更快些,這樣一款速度可以媲美真機的模擬器,更加有利於我們後期的安卓自動化測試。下面就從夜神模擬器的選擇原因及夜神模擬器的使用兩方面講述。

一、夜神模擬器的選擇原因

    眾所周知,Android studio的模擬器執行速度也很快,可以媲美真機。雖然其執行速度很快,可以滿足我們測試的需求。但仍存在以下問題:

(1)Android studio的模擬器無法連線wifi,修改dns,不能用測試環境的版本去進行Monkeyrunner指令碼的執行及測試;

(2)如果選用真機,修改dns後,可以用測試版本,但無法採用HierarchyViewer獲取控制元件ID,執行Monkeyrunner會報錯。

    有人又會說(2)中,使用真機可以選擇獲取控制元件座標,不使用控制元件ID,這裡使用控制元件ID的原因,見文章尾解釋。下面附加一個真機使用 

    HierarchyViewer報錯截圖。

    執行結果:失敗

    原因:指令碼中呼叫到了HierarchyViewer,但是真機中沒有開啟view server。

技術分享

    基於上述兩種原因,因此,我們選擇夜神模擬器作為測試中要使用的模擬器。夜神模擬器對於我們來說,好處就是可以連線wifi,修改dns,速度

    快,但是記憶體比較大。

二、夜神模擬器的設定與連線

1.模擬器下載與設定

    夜神模擬器佔用記憶體比較大,可以去官網下載:http://www.yeshen.com/。下載完成後,按照安裝提示,預設安裝或自定義安裝即可。

    安裝成功後,開啟模擬器,可以在設定中,設定成顯示為手機版,重啟後生效。以後,每次啟動後,模擬器就是你所設定的手機的大小。同樣,可

    以設定其他選項,這個根據自己需要設定。

技術分享

2.模擬器的連線

    模擬器設定完成後,在cmd視窗中,檢視該模擬器是否連線上電腦,輸入adb devices,結果顯示沒有裝置連線。

技術分享

    接下來,就是如何使模擬器連線上電腦。開啟夜神模擬器,然後cmd中進Android sdk下的platform-tools目錄,然後執行命令:adb connect 

    127.0.0.1:62001。(如果環境變數中已配置ANDROID_HOME,則直接開啟cmd,執行命令:adb connect 127.0.0.1:62001即可)。或者用夜神自

     帶的non_adb.exe,進入到夜神安裝目錄下的bin目錄中,執行命令:adb connect 127.0.0.1:62001。

技術分享 

    最後cmd視窗中,輸入命令:adb devices,檢視夜神模擬器已經連線上。

技術分享

三、夜神模擬器的使用

    和之前的任一款Android模擬器一樣,安裝我們自己需要的app,我們這裡安裝XXX的app,此時,由於沒有修改wifi的dns,此時,連線的是線上環

    境。

1.dns的修改

    下面,我們修改dns為xx.x.x.x,切換到測試環境。

     設定頁面,選擇WLAN,可以看到已經連線的wifi,長按滑鼠左鍵,彈框修改網路。

技術分享 

    點選修改網路,在網路詳情頁面,勾選“顯示高階選項”,修改域名1為xx.x.x.x。

技術分享 

    現在可以開啟app,輸入測試賬號進行登入了。

2.模擬器的簡單使用

夜神模擬器直接雙擊開啟啟動就行。我們現在可以把Hierarchy Viewer開啟,獲取夜神模擬器中安裝的個人端app登入頁面的控制元件ID,並檢視一下速度有沒有達到我們的需求。

開啟android-sdk\tools下面的hierarchyviewer.bat,執行,可以快速獲取登入頁面的賬號輸入框、密碼輸入框、登入按鈕的ID。

技術分享

 技術分享 

    之後,將app切到登入頁面,在夜神模擬器上執行登入頁面的Monkeyrunner指令碼。指令碼如下,可以一步一步執行,也可以直接寫到py檔案中執行。

具體的指令碼如下(指令碼的編寫會在後面文章中介紹):

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

from com.android.monkeyrunner.easy import EasyMonkeyDevice   #提供了根據ID進行訪問

from com.android.monkeyrunner.easy import By    #根據ID返回PyObject的方法

device=MonkeyRunner.waitForConnection(5,‘127.0.0.1:62001‘)  #連線夜神模擬器

MonkeyRunner.sleep(3.0)

packageName=‘xxxxxxxx‘

activity=‘xxxxxx‘

componentName=packageName+‘/‘+activity

device.startActivity(component=componentName)

easy_device=EasyMonkeyDevice(device)       #必須在activity啟動之後

easy_device.touch(By.id(‘id/input_login_phone‘),MonkeyDevice.DOWN_AND_UP)        #獲取輸入賬號的控制元件ID

device.type(‘18511111111‘)                   #在賬號輸入框中輸入賬號                              

    檢視模擬器中是否有輸入。注意,monkeyrunner執行上述py檔案時,會失敗報錯。

    原因:python編碼的問題, python中預設的編碼格式是ASCII格式,所以,沒有修改編碼格式時無法顯示中文。

技術分享   

    解決方法:在每一個需要顯示中文的python檔案中,加入#coding:utf-8、#-*-coding:utf-8 -*-或#vim: set fileencoding:utf-8,我們這邊選擇#coding:utf-8。

即,在上述的py檔案的頂部,加入#coding:utf-8後,再執行,則可以執行成功。

四、控制元件ID的使用原因

    Monkeyrunner需要通過獲取控制元件座標或控制元件ID,編寫指令碼執行。但是,獲取控制元件座標會由於不同解析度,導致指令碼不能複用,需要重新獲取座標,這樣Monkeyrunner指令碼的可用性比較差。

    所以我們採取通過Hierarchy Viewer獲取控制元件ID編寫指令碼(後面會有文章講述獲取ID或座標方法)。但Hierarchy Viewer只能連線Android開發版手機或是模擬器,網上雖然有一些如何把手機root和開啟view service的文章,建議不要嘗試,手機容易變磚或者不斷重啟。