作APP的UI自動化測試時,咱們每每會使用真機跑自動化測試腳本,由於這樣纔是最真實的使用場景。但前期調試腳本的話,能夠先使用模擬器,這樣相對更加方便。html
不推薦使用Android SDK裏自帶模擬器,太卡。python
這裏介紹兩款我正在用於作自動化測試的模擬器:Genymotion 與 夜神模擬器。android
使用Genymotion時須要登陸帳號,咱們須要去Genymotion官網註冊帳號。web
官網地址:https://www.genymotion.com/架構
官網首頁點擊【Sign In】app
進入登陸頁面後點擊【Create an account】,進入註冊頁面,填寫信息註冊帳號。工具
官網下載地址:https://www.genymotion.com/download/測試
這裏我選擇下載第一個,即with VirtualBox,電腦已安裝了VirtualBox的話則下載第二個。3d
3.1,雙擊下載好的exe文件,選擇好安裝路徑(或默認),而後一路點擊next便可。調試
安裝過程當中會提示安裝VirtualBox,一樣的,選擇好安裝路徑(或默認),一路點擊肯定便可。
安裝完成後桌面會出現如下3個圖標
3.2,雙擊Genymotion打開,輸入註冊好的帳號登陸,點擊NEXT按鈕。
3.3,選擇Personal Use,點擊NEXT。(固然有購買證書的話選擇 I have a license也行)
3.4,勾選協議,點擊NEXT。
而後就進入到了Genymotion首頁
4.1,點擊頁面右上角「+」,進入選擇設備頁面。
4.2,下拉滑動可查看選擇不一樣的機型與系統版本,你們可根據須要自行選擇下載。
注意:由於後面會安裝的ARM轉換工具Genymotion-ARM-Translation暫時只支持最高android 8.0,因此我這裏選擇Samsung Galaxy S8 系統爲Android 8.0,點擊NEXT,跳轉至下一個頁面。
4.3,該頁面下,咱們能夠給設備從新命名,選擇分辨率、系統版本等配置,填寫選擇好後,點擊右下角 "INSTALL" 按鈕。我這裏所有選擇默認,點擊安裝。
而後頁面顯示正在下載,下載須要點時間,耐心等待便可
4.4,安裝完成後,雙擊該設備便可啓動,或以下圖步驟點擊也可啓動。
4.5,啓動後界面以下。每次打開後要確保圖中所指的wifi圖標是鏈接狀態,不然不能聯網。
5.1,將下載好的apk文件拖動到模擬器界面,即進行安裝。
5.2,首次安裝APP時一般會出現如下提示:Genymotion device cannot run ARM instructions,以下圖
緣由:Genymotion模擬器基於x86,不能運行基於ARM架構的APP。
解決方法:安裝3.2中提到的ARM轉換工具Genymotion-ARM-Translation。
支持android 8 的Genymotion-ARM-Translation下載地址以下
連接:https://pan.baidu.com/s/1_q31jqIbWubHzGU__IKnmA
提取碼:s5gn
下載完成後,將該壓縮文件拖到模擬器便可安裝,點擊OK,安裝完成後重啓模擬器便可。
5.3,繼續安裝app,以安裝今日頭條APP爲例。
在今日頭條官網下載今日頭條app,拖動至模擬器,等待安裝完成便可。安裝完成後,打開以下:
5.3,查看模擬器設備id
在模擬器打開的狀況,cmd輸入命令:adb devices,能夠查看該模擬器的設備id,以下:
6.1,獲取模擬器的設備信息,以及被測app的信息(以今日頭條APP爲例)。獲取方法跟博客appium鏈接真機啓動app中第二部分的方法同樣。
6.2,根據獲取到的參數信息,編寫示例腳本以下:
# -*- coding:utf-8 -*- # @author: 給你一頁白紙 from appium import webdriver desired_caps = { "platformName": "Android", "platformVersion": "8.0", "deviceName": "Samsung Galaxy s8", "appPackage": "com.ss.android.article.news", "appActivity": ".activity.MainActivity", "unicodeKeyboard": True, "resetKeyboard": True, "noReset": True, } # 啓動app driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
啓動appium服務,再運行腳本,能夠看到被測app被啓動。
注意:點擊APP打開時可能會出現:xxx keeps stopping,致使打不開APP,以下圖。
這種狀況暫時沒有找到解決方法。在公司測試本身的APP時,爲了不出現這種狀況,不要在模擬器裏安裝從應用市場下載來的APP,而是安裝本身在本地打的release包,或者直接讓開發給你打包一個用於測試的app,這樣是能夠打開的。
1.1,下載。官網下載地址:https://www.yeshen.com/
1.2,安裝。可自定義安裝路徑,過程簡單。安裝完成後電腦桌面會出現兩個快捷方式,以下:
打開夜神模擬器,界面以下。默認是橫屏,點擊圖中一、2可切換成豎屏。
1.3,設置。關閉夜神模擬器,打開夜神多開器,能夠對模擬器進行設置,點擊以下設置按鈕。
進入設置頁面,可進行相應的設置,以下圖是個人設置。
在夜神多開器裏,還能夠以下選擇android版本安裝更多的模擬器。
夜神多開器更多的功能不贅述。
2.1,電腦安裝Android SDK並配置好環境變量,沒有安裝的話能夠查看博客appium環境搭建。
2.2,打開模擬器,輸入命令adb devices,會發現找不到鏈接的模擬器設備。
2.3,這個時候,首先要確認SDK與夜神模擬器的adb版本是否一致,不一致則需替換成一致。
Android SDK的adb版本,輸入命令:adb version
cd進入夜神模擬器安裝路徑的bin,輸入命令nox_adb version查看
顯然SDK中的adb版本更高,須要替換成同樣的版本(選擇更高的版本)。
替換方法:刪除夜神模擬器安裝路徑中bin文件夾裏的nox_adb.exe,再將Android SDK裏的adb.exe複製到夜神模擬器安裝路徑的bin文件夾中,重命名爲nox_adb。
2.4,替換完成後,從新打開模擬器,且從新打開cmd命令窗,再次輸入命令adb devices,查看設備id成功。以下:
將下載好的apk文件拖動到模擬器界面,即進行安裝。也能夠在其自帶的遊戲中心APP裏面搜索應用安裝。
4.1,獲取夜神模模擬器的設備信息,以及被測app的信息(以今日頭條APP爲例)。獲取方法跟博客appium鏈接真機啓動app中第二部分的方法同樣。
4.2,根據獲取到的參數信息,編寫示例腳本以下:
# -*- coding:utf-8 -*- # @author: 給你一頁白紙 from appium import webdriver desired_caps = { "platformName": "Android", "platformVersion": "7.1.2", "deviceName": "VOG_AL10", "appPackage": "com.ss.android.article.news", "appActivity": ".activity.MainActivity", "unicodeKeyboard": True, "resetKeyboard": True, "noReset": True, } # 啓動app driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
啓動appium服務,再運行腳本,能夠看到今日頭條app被啓動。
1.1,Genymotion支持到了Android 10版本的模擬器,但由於暫時只找到了支持Android 8.0的Genymotion-ARM-Translation,因此可用的也就只到Android 8.0,有興趣的能夠去網上查找支持更高版本的ARM轉換工具。
1.2,Genymotion模擬器安裝應用市場的app,打開後會出現閃退,並且幾乎是全部的APP。
2.1,夜神模擬器暫時最高只有Android 7的版本,但如今的Android手機基本都是Android 9以上的版本。
綜上,能夠根據本身的喜愛與方便程度選擇,腳本調試的時候可能使用模擬器方便一點,但實際自動化測試過程當中仍是推薦使用真機,使用真機請參考博客appium鏈接真機啓動app。