Eclipse+appium+夜神虛擬機環境調試
最近在學習python,發現教程幾乎都是連接手機真機,但是目前手里沒有可測試的真機,所以想到用虛擬機練習。網上關于這部分的內容真的是非常少,好不容易找到一個遇到的問題也是卡了很久才解決,所以總結下過程和遇到的問題,重新回顧一下。這部分環境搭建確實挺復雜,會遇到各種各樣的問題,大家需要有點小強精神哦
1. python自動化實現原理
首先先來了解一下appium工作原理,以及如何進行交互,方便我們了解自己需要搭建什么樣的環境
? ? ? ? 如上面圖所示,appium自動化環境包括三個部分:客戶端,服務端,移動設備,那么這3部分是如何工作的呢?
1. 客戶端編寫好腳本后,運行代碼,這里的客戶端支持各種語言(python,java等),通過webdriver協議調用appium服務器
2. 服務端首先建立一個會話,通過4724端口和移動設備通信
3. 移動端bootstrap.jar接受到請求后發送給UIAotomator
4. UIAotomator執行腳本命令,進行自動化測試
2. 搭建環境所需工具安裝
通過上面的過程,我們了解到只要從這3端中挑選出適合自己的工具就可以了
這里給大家介紹一個很好的搭建網址,供大家參考,介紹的非常詳細,相信比我寫出來的會好很多:http://www.testclass.net/appium/
這里附上我自己下載的安裝包路徑,環境是win7 64 位:https://pan.baidu.com/s/1hsxT9FQ
3.環境調試
在這一部分,我將按照實際過程的步驟進行講解,大家按照我這個過程一步一步來,分別為測試包安裝-》虛擬機連接電腦-》啟動appiumdesktop-》建立回話-》運行腳本-》腳本運行成功
3.1模擬器測試安裝包安裝
1. ? 我這里安裝的測試包為公司正在測試的一款軟件‘飛凡’, ,將安裝包直接拖拽到cmd后enter,可以看到模擬器安裝包已經開始安裝,安裝成功如下圖所示(如果不支持拖拽的話,在cmd中輸入adb install app所在目錄,如輸入adb install? D:\chrome下載\com.wanda.app.wanhui_422000000.apk 也可以安裝成功)
3.2 模擬器adb命令連接到電腦
打開夜神( )虛擬機,在cmd里輸入命令adb connect 127.0.0.1:62001(如果環境變量沒有配置ANDROID_HOME,cmd需進入Android sdk下的platform-tools目錄下再運行adb connect 127.0.0.1:62001),出現connected to 127.0.0.1:62001提示說明連接成功。
3.3 啟動appiumdesktop,建立session回話,確定capability
1. 點擊圖標 啟動appiumdesktop,啟動界面如下圖所示
2.點擊start server按鈕,出現server運行成功界面
3.點擊右上方搜索圖標,在這里很關鍵,有幾個需要我們確定的capbility,下圖是我已經確定好的
4.那么如何確定這幾個關鍵因素呢:
Devicename(設備名稱)
appWaitActivity(測試包的首個等待頁)
appPackage(測試包的首個等待頁)
platformName(測試平臺名稱)
platformVersion(測試平臺版本號)
Devicename? 虛擬機連接電腦成功后,在cmd里輸入adb devices,device前的就是設備名稱,因為是虛擬機,所以出現的是ip地址端口號形式,如果要是真機的話就不是這樣的
appPackage、appWaitActivity這兩項我試用了很多方法,比如adb logcat命令,但我發現查找功能項appWaitActivity的時候查找不到,最后推薦大家使用我下面的方法:aapt
1.cmd 進入 Android SDK下aapt目錄:我這里目錄是D:\software\android-sdk-windows\build-tools\27.0.2
2.運行aapt工具:aapt dump badging 路徑+名稱,如aapt dump badging d:\com.wanda.app.wanhui_422000000.apk,
包名稱就是:com.wanda.app.wanhui,在Android系統中是判斷一個App的唯一標識,這里要注意以這里顯示的為準,不要直接寫上面安裝包的名稱如com.wanda.app.wanhui_422000000,否則會報錯
頁面下拉找到appWaitActivity為:com.feifan.o2o.business.launch.LauncherActivity
3.platformName就是使用哪種移動平臺,我這里就填Android
4. platformVersion是測試平臺版本號:虛擬機可以進入設置->關于查看,我這里是4.4.2
Ok,到這里我們把確定好的capbility都添加到appium中,點擊右下方的保存按鈕,appium的虛擬環境設置工作就完成了,接下來我們在eclipese里運行腳本
3.4 eclipse運行腳本,調用appiumdestop中session回話
這里我把建立項目的過程說一下:
1. 在eclipse里運行腳本前需要導入python項目,參考配置網址:https://www.cnblogs.com/Bonker/p/3584707.html,如果覺得配置麻煩,用python自帶的Idle運行也可以,簡單方便
2. 將下面的代碼拷貝eclipse模塊中,點擊運行按鈕,如果一切正常,就會看到夜神虛擬機中飛凡app成功啟動運行
@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('黃商超市八里商貿中心店').click()
driver.quit()
4.在運行過程中會遇到的錯誤
實際上,剛剛接觸自動化環境,搭建完成后都會遇到各種錯誤,下面舉例說明一下
4.1.運行代碼后 appium desktop 啟動,提示“could not find a connected Android device”,這個問題困擾了我好久,明明知道是沒有找到設備,但就是想不明白為什么找不到,這時我就開始各種懷疑人生,難道是我環境配錯了,進行了各種試錯過程,后來想了想adb 經常重啟,就嘗試著在運行代碼后,在cmd里重新執行adb connect 127.0.0.1:62001命令,ok 問題解決,當用真機的時候就不會有這樣的問題
4.2問題1 解決后出現如下提示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.,后面多了一個” .”,這種錯誤同志們不要嘗試犯這種低級錯誤
3. 繼續運行一遍代碼,這回提示錯誤“activity used to start app doesn’t exist or cannot be launched!make sure…”,提示的意思是啟動app時沒有找到activity,可以確定是我們的launchable activity寫錯啦,重新查一遍launchable activity具體是什么就好了,回到上文aapt命令翻閱
4.eclipse運行程序,報錯“name '黃商超市八里商貿中心店' is not defined”
查看上面的代碼發現()里的內容沒有加‘’導致,添加即可
綜上,其實在eclipse運行代碼后,夜神虛擬機中指定app啟動成功就說明你的環境已經配置成功了,接下來就可以進行自動化腳本編寫啦