Python+Appium自動化測試(15)-使用Android模擬器(詳細)


做APP的UI自動化測試時,我們往往會使用真機跑自動化測試腳本,因為這樣才是最真實的使用場景。但前期調試腳本的話,可以先使用模擬器,這樣相對更加方便。

不推薦使用Android SDK里自帶模擬器,太卡。

這里介紹兩款我正在用於做自動化測試的模擬器:Genymotion 與 夜神模擬器。

一,Genymotion

1,注冊賬號

使用Genymotion時需要登錄賬號,我們需要去Genymotion官網注冊賬號。

官網地址:https://www.genymotion.com/

官網首頁點擊【Sign In】

進入登錄頁面后點擊【Create an account】,進入注冊頁面,填寫信息注冊賬號。

2,下載Genymotion

官網下載地址:https://www.genymotion.com/download/

這里我選擇下載第一個,即with VirtualBox,電腦已安裝了VirtualBox的話則下載第二個。

3,安裝Genymotion

3.1,雙擊下載好的exe文件,選擇好安裝路徑(或默認),然后一路點擊next即可。

安裝過程中會提示安裝VirtualBox,同樣的,選擇好安裝路徑(或默認),一路點擊確定即可。

安裝完成后桌面會出現以下3個圖標

3.2,雙擊Genymotion打開,輸入注冊好的賬號登錄,點擊NEXT按鈕。

3.3,選擇Personal Use,點擊NEXT。(當然有購買證書的話選擇 I have a license也行)

3.4,勾選協議,點擊NEXT。

然后就進入到了Genymotion首頁

4,創建虛擬設備

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,安裝app

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,python+appium啟動Genymotion模擬器中的APP

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.1,下載。官網下載地址:https://www.yeshen.com/

1.2,安裝。可自定義安裝路徑,過程簡單。安裝完成后電腦桌面會出現兩個快捷方式,如下:

打開夜神模擬器,界面如下。默認是橫屏,點擊圖中1、2可切換成豎屏。

1.3,設置。關閉夜神模擬器,打開夜神多開器,可以對模擬器進行設置,點擊如下設置按鈕。

進入設置頁面,可進行相應的設置,如下圖是我的設置。

在夜神多開器里,還可以如下選擇android版本安裝更多的模擬器。

夜神多開器更多的功能不贅述。

2,獲取模擬器的設備id

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成功。如下:

3,安裝APP

將下載好的apk文件拖動到模擬器界面,即進行安裝。也可以在其自帶的游戲中心APP里面搜索應用安裝。

4,python+appium啟動夜神模擬器中的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,Genymotion的缺點

1.1,Genymotion支持到了Android 10版本的模擬器,但因為暫時只找到了支持Android 8.0的Genymotion-ARM-Translation,所以可用的也就只到Android 8.0,有興趣的可以去網上查找支持更高版本的ARM轉換工具。

1.2,Genymotion模擬器安裝應用市場的app,打開后會出現閃退,而且幾乎是所有的APP。

2,夜神模擬器的缺點

2.1,夜神模擬器暫時最高只有Android 7的版本,但現在的Android手機基本都是Android 9以上的版本。

綜上,可以根據自己的喜好與方便程度選擇,腳本調試的時候可能使用模擬器方便一點,但實際自動化測試過程中還是推薦使用真機,使用真機請參考博客appium連接真機啟動app


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM