Appuim菜鳥級入手-Android自動化
一、Appium環(huán)境搭建(mac系統(tǒng))
1.安裝Appium
通過下載dmg安裝:
官方下載:http://appium.io/
國內(nèi)下載:http://pan.baidu.com/s/1jGvAISu(推薦)
2.下載Android
SDK,鏈接http://down.tech.sina.com.cn/page/45703.html
3.安裝Xcode,下載地址:https://developer.apple.com/downloads/--iOS
4.使用GUI工具安裝Appium(AppiumUI程序),下載地址:http://appium.io/
5.命令行安裝
#安裝nodejs
brew?install?node
#安裝appium
npm?install?-g appium此命令安裝比較慢,注意與taobao鏡像安裝后的命令不同
#安裝python client
pip3?install?Appium-Python-Client
注:
如果遇到網(wǎng)絡(luò)問題導(dǎo)致npm安裝appium失敗的情況,可以嘗試使用淘寶的鏡像
安裝Appium或者用
$ npm install cnpm -g --registry=https://registry.npm.taobao.org
$ npm view appium versions #查看appium所有的版本號
使用淘寶鏡像后,安裝命令對應(yīng)的變成:
cnpm?install?-g appium
注:
測試IOS10系統(tǒng)請嚴(yán)格按照XCUITest-Driver文檔配置。
6.PS.診斷(保留,我用的是在appium中,點(diǎn)擊Doctor方法來查看)
#安裝appium診斷工具
npm?install?-g appium-doctor
使用appium診斷:
診斷通過后,如下圖所示:

7.在Appium中點(diǎn)擊Doctor圖標(biāo),出現(xiàn)如下提示

如圖上圖,ANDROID_HOME,JAVA_HOME未設(shè)置
設(shè)置環(huán)境變量
lishandeMacBook-Pro:~ lishan$ vim ~/.bash_profile
1編輯模式
lishandeMacBook-Pro:~ lishan$ source
~/.bash_profile ? ?2重新加載配置文件
lishandeMacBook-Pro:~ lishan$ cat ~/.bash_profile
3查看配置文件
例子中sdk目錄為:/Users/zhaoye/work/android/sdk,jdk目錄為:/Library/Java/JavaVirtualMachines/jdk1.7.0_76.jdk/Contents/Home
在第1步,按i進(jìn)入編輯模式插入下列內(nèi)容
我的SDK目錄為:/Users/lishan/Library/Android/sdk(查看方法:在AndroidStudio-Preference-System Setting-Android SDK查看sdk目錄)

#Android home
export ANDROID_HOME=/Users/lishan/Library/Android/sdk
#Android path
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools
#Java home
export
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
#Java bin path
export PATH=$PATH:$JAVA_HOME/bin
按ESC退出編輯模式
輸入:wq保存退出
8.按步驟123執(zhí)行完后,再次點(diǎn)擊Appium的Doctor按鈕,出現(xiàn)如下界面,證明成功

9.在手機(jī)端安裝美團(tuán)app,安裝后,手機(jī)連接電腦。在終端輸入adb命令
adb在配置環(huán)境變量的時候已經(jīng)配置了,可以去目錄下查看是否有adb

刷新配置文件source ~/.bash_profile
adb devices顯示當(dāng)前運(yùn)行的全部模擬器
adb shell進(jìn)入adb的shell模式
pm list package查看已安裝的包,顯示所有已經(jīng)安裝的包名

可以grep一下,pm list package |grep

"meituan"
adb logcat -s ActivityManager -s是過濾(silent)ActivityManager是將此加入到白名單,查看日志前提是本地得安裝app

IOWE代表日志類型,后面是系統(tǒng)日志關(guān)鍵字,(1074)是pid進(jìn)程號,然后是包名,后面是首頁啟動項(xiàng)
10.也可以直接問RD

再次點(diǎn)擊安卓小人標(biāo)識,上面的窗口隱藏,點(diǎn)擊launch再點(diǎn)擊inspector

iOS用Appium Inspector比較好。Android用uiautomatorviewer比較好

11.在終端輸入uiautomatorviewer,直接啟動界面

注意:有時,點(diǎn)擊小人安卓報錯,需要多試幾次。再不行就在終端重新啟動uiautomatorviewer
此時在手機(jī)上點(diǎn)擊進(jìn)入美團(tuán)某個頁面,再次點(diǎn)擊左上角紅框的標(biāo)識,模擬器里的頁面顯示與手機(jī)上一致。點(diǎn)擊某個元素,查看右側(cè),顯示位置。獲取元素位置,寫入代碼里

12.下載安裝pycharm,寫入如下代碼
# -*- coding:utf-8 -*-
fromappiumimportwebdriver
hub ='http://localhost:4723/wd/hub'
caps = {}
caps['platformName'] ='android'
caps['udid'] ='2e9d9961'
caps['deviceName'] ='android_1'
# caps['automationName'] = 'XCUITest'
caps['newCommandTimeout'] =30000
# caps['bundleId'] = 'com.meituan.imeituan'
caps['appPackage'] ='com.sankuai.meituan'
caps['appActivity'] ='.activity.Welcome'
# caps['appActivity'] = '.city.BaseCityActivity'
# caps['app'] = '/Users/lilei/PycharmProjects/appiumtest/aimeituan-5658.apk'
wd = webdriver.Remote(hub, caps)
wd.find_element_by_android_uiautomator(u'new UiSelector().text("北京")').click()
代碼里udid獲取需要在終端輸入adb devices,查看

啟動appium服務(wù),執(zhí)行程序,才不會報錯


坑:再次運(yùn)行代碼,失敗
提示org.openqa.selenium.SessionNotCreatedException:
A new session could not be created. Details: Problem getting session data for
driver type IosDriver; does it implement 'get driverData'? (WARNING: The server
did not provide any stacktrace information)
或者Problem getting session
data for driver type AndroidDriver; does it implement 'get driverData
解決辦法:
命令行啟動,則添加--session-override:
appium -p 4723 --session-override