Eclipse+appium+夜神虛擬機(jī)環(huán)境調(diào)試
最近在學(xué)習(xí)python,發(fā)現(xiàn)教程幾乎都是連接手機(jī)真機(jī),但是目前手里沒有可測(cè)試的真機(jī),所以想到用虛擬機(jī)練習(xí)。網(wǎng)上關(guān)于這部分的內(nèi)容真的是非常少,好不容易找到一個(gè)遇到的問題也是卡了很久才解決,所以總結(jié)下過程和遇到的問題,重新回顧一下。這部分環(huán)境搭建確實(shí)挺復(fù)雜,會(huì)遇到各種各樣的問題,大家需要有點(diǎn)小強(qiáng)精神哦
1. python自動(dòng)化實(shí)現(xiàn)原理
首先先來了解一下appium工作原理,以及如何進(jìn)行交互,方便我們了解自己需要搭建什么樣的環(huán)境

? ? ? ? 如上面圖所示,appium自動(dòng)化環(huán)境包括三個(gè)部分:客戶端,服務(wù)端,移動(dòng)設(shè)備,那么這3部分是如何工作的呢?
1. 客戶端編寫好腳本后,運(yùn)行代碼,這里的客戶端支持各種語(yǔ)言(python,java等),通過webdriver協(xié)議調(diào)用appium服務(wù)器
2. 服務(wù)端首先建立一個(gè)會(huì)話,通過4724端口和移動(dòng)設(shè)備通信
3. 移動(dòng)端bootstrap.jar接受到請(qǐng)求后發(fā)送給UIAotomator
4. UIAotomator執(zhí)行腳本命令,進(jìn)行自動(dòng)化測(cè)試
2. 搭建環(huán)境所需工具安裝
通過上面的過程,我們了解到只要從這3端中挑選出適合自己的工具就可以了
這里給大家介紹一個(gè)很好的搭建網(wǎng)址,供大家參考,介紹的非常詳細(xì),相信比我寫出來的會(huì)好很多:http://www.testclass.net/appium/
這里附上我自己下載的安裝包路徑,環(huán)境是win7 64 位:https://pan.baidu.com/s/1hsxT9FQ

3.環(huán)境調(diào)試
在這一部分,我將按照實(shí)際過程的步驟進(jìn)行講解,大家按照我這個(gè)過程一步一步來,分別為測(cè)試包安裝-》虛擬機(jī)連接電腦-》啟動(dòng)appiumdesktop-》建立回話-》運(yùn)行腳本-》腳本運(yùn)行成功
3.1模擬器測(cè)試安裝包安裝
1. ? 我這里安裝的測(cè)試包為公司正在測(cè)試的一款軟件‘飛凡’, ,將安裝包直接拖拽到cmd后enter,可以看到模擬器安裝包已經(jīng)開始安裝,安裝成功如下圖所示(如果不支持拖拽的話,在cmd中輸入adb install app所在目錄,如輸入adb install? D:\chrome下載\com.wanda.app.wanhui_422000000.apk 也可以安裝成功)

3.2 模擬器adb命令連接到電腦
打開夜神( )虛擬機(jī),在cmd里輸入命令adb connect 127.0.0.1:62001(如果環(huán)境變量沒有配置ANDROID_HOME,cmd需進(jìn)入Android sdk下的platform-tools目錄下再運(yùn)行adb connect 127.0.0.1:62001),出現(xiàn)connected to 127.0.0.1:62001提示說明連接成功。

3.3 啟動(dòng)appiumdesktop,建立session回話,確定capability
1. 點(diǎn)擊圖標(biāo) 啟動(dòng)appiumdesktop,啟動(dòng)界面如下圖所示

2.點(diǎn)擊start server按鈕,出現(xiàn)server運(yùn)行成功界面

3.點(diǎn)擊右上方搜索圖標(biāo),在這里很關(guān)鍵,有幾個(gè)需要我們確定的capbility,下圖是我已經(jīng)確定好的

4.那么如何確定這幾個(gè)關(guān)鍵因素呢:
Devicename(設(shè)備名稱)
appWaitActivity(測(cè)試包的首個(gè)等待頁(yè))
appPackage(測(cè)試包的首個(gè)等待頁(yè))
platformName(測(cè)試平臺(tái)名稱)
platformVersion(測(cè)試平臺(tái)版本號(hào))
Devicename? 虛擬機(jī)連接電腦成功后,在cmd里輸入adb devices,device前的就是設(shè)備名稱,因?yàn)槭翘摂M機(jī),所以出現(xiàn)的是ip地址端口號(hào)形式,如果要是真機(jī)的話就不是這樣的

appPackage、appWaitActivity這兩項(xiàng)我試用了很多方法,比如adb logcat命令,但我發(fā)現(xiàn)查找功能項(xiàng)appWaitActivity的時(shí)候查找不到,最后推薦大家使用我下面的方法:aapt
1.cmd 進(jìn)入 Android SDK下aapt目錄:我這里目錄是D:\software\android-sdk-windows\build-tools\27.0.2
2.運(yùn)行aapt工具:aapt dump badging 路徑+名稱,如aapt dump badging d:\com.wanda.app.wanhui_422000000.apk,
包名稱就是:com.wanda.app.wanhui,在Android系統(tǒng)中是判斷一個(gè)App的唯一標(biāo)識(shí),這里要注意以這里顯示的為準(zhǔn),不要直接寫上面安裝包的名稱如com.wanda.app.wanhui_422000000,否則會(huì)報(bào)錯(cuò)

頁(yè)面下拉找到appWaitActivity為:com.feifan.o2o.business.launch.LauncherActivity

3.platformName就是使用哪種移動(dòng)平臺(tái),我這里就填A(yù)ndroid
4. platformVersion是測(cè)試平臺(tái)版本號(hào):虛擬機(jī)可以進(jìn)入設(shè)置->關(guān)于查看,我這里是4.4.2

Ok,到這里我們把確定好的capbility都添加到appium中,點(diǎn)擊右下方的保存按鈕,appium的虛擬環(huán)境設(shè)置工作就完成了,接下來我們?cè)趀clipese里運(yùn)行腳本
3.4 eclipse運(yùn)行腳本,調(diào)用appiumdestop中session回話
這里我把建立項(xiàng)目的過程說一下:
1. 在eclipse里運(yùn)行腳本前需要導(dǎo)入python項(xiàng)目,參考配置網(wǎng)址:https://www.cnblogs.com/Bonker/p/3584707.html,如果覺得配置麻煩,用python自帶的Idle運(yùn)行也可以,簡(jiǎn)單方便
2. 將下面的代碼拷貝eclipse模塊中,點(diǎn)擊運(yùn)行按鈕,如果一切正常,就會(huì)看到夜神虛擬機(jī)中飛凡app成功啟動(dòng)運(yùn)行
@author: Administrator
'''
#coding=utf-8
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.wanda.app.wanhui'
desired_caps['appActivity'] = 'com.feifan.o2o.business.launch.LauncherActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_name('黃商超市八里商貿(mào)中心店').click()
driver.quit()
4.在運(yùn)行過程中會(huì)遇到的錯(cuò)誤
實(shí)際上,剛剛接觸自動(dòng)化環(huán)境,搭建完成后都會(huì)遇到各種錯(cuò)誤,下面舉例說明一下
4.1.運(yùn)行代碼后 appium desktop 啟動(dòng),提示“could not find a connected Android device”,這個(gè)問題困擾了我好久,明明知道是沒有找到設(shè)備,但就是想不明白為什么找不到,這時(shí)我就開始各種懷疑人生,難道是我環(huán)境配錯(cuò)了,進(jìn)行了各種試錯(cuò)過程,后來想了想adb 經(jīng)常重啟,就嘗試著在運(yùn)行代碼后,在cmd里重新執(zhí)行adb connect 127.0.0.1:62001命令,ok 問題解決,當(dāng)用真機(jī)的時(shí)候就不會(huì)有這樣的問題

4.2問題1 解決后出現(xiàn)如下提示error running command: Error: Unable to find an active device or emulator with OS 4.4.4.. The following are available: 127.0.0.1:7555 (4.4.4)

原來4.4.4.,后面多了一個(gè)” .”,這種錯(cuò)誤同志們不要嘗試犯這種低級(jí)錯(cuò)誤
3. 繼續(xù)運(yùn)行一遍代碼,這回提示錯(cuò)誤“activity used to start app doesn’t exist or cannot be launched!make sure…”,提示的意思是啟動(dòng)app時(shí)沒有找到activity,可以確定是我們的launchable activity寫錯(cuò)啦,重新查一遍launchable activity具體是什么就好了,回到上文aapt命令翻閱

4.eclipse運(yùn)行程序,報(bào)錯(cuò)“name '黃商超市八里商貿(mào)中心店' is not defined”

查看上面的代碼發(fā)現(xiàn)()里的內(nèi)容沒有加‘’導(dǎo)致,添加即可
綜上,其實(shí)在eclipse運(yùn)行代碼后,夜神虛擬機(jī)中指定app啟動(dòng)成功就說明你的環(huán)境已經(jīng)配置成功了,接下來就可以進(jìn)行自動(dòng)化腳本編寫啦