核心架構:Appium使用C/S架構,運行時候Service端會監聽Client端發送的命令,接着在移動設備上執行這些命令,然后將執行結果放在 HTTP 響應中返還給客戶端。
一.Mac基礎環境
首先要確定Java、git、ruby、homebrew是否已經全部安裝。在終端中輸入下圖的命令查看:
如果沒有安裝,參考下面的方法
(1)安裝Java JDK
官網下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下載macOS x64對應的dmg安裝包,一路下一步默認路徑安裝,java安裝路徑一般在:
/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk
然后去配置環境變量,在終端執行如下操作:
# 打開編輯變量文件 open -e .bash_profile # 輸入如下格式java變量,路徑填寫個人實際安裝路徑(默認安裝就是如下路徑) #java JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home PATH=$JAVA_HOME/bin:$PATH:. CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:. export JAVA_HOME export PATH export CLASSPATH # 設置完成后需執行該文件以生效 source .bash_profile
配置完成后,命令行輸入 java -version 查看版本以檢測配置是否成功
localhost:~ xxx$ java -version java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
(2)Mac上有默認自帶安裝了git和ruby,homebrew安裝的教程參考我的博客:https://www.cnblogs.com/wangyadong/p/12709001.html
二.測試iOS使用Xcode;測試Android使用android SDK。
(1)Xcode安裝:
從App Store上下載Xcode后,默認是不會安裝Command Line Tools的,Command Line Tools是在Xcode中的一款工具,可以在命令行中運行C程序。為了配置appium環境,我們需
要安裝Xcode Command Line Tools。
打開終端,輸入xcode-select --install 一路下一步按提示安裝,安裝參考:https://blog.csdn.net/yxys01/article/details/73456973 驗證 xcode command line tools 是否安裝成功
(2)android SDK安裝:
(2.1)下載地址:https://www.androiddevtools.cn 選擇Andriod SDK工具,SDK Tools,下載mac版本,解壓,我放到/Users/wangyadong/下,終端執行:
./android-sdk-macosx/tools/android 此時會打開圖形安裝工具下圖1,只需要手動勾選Extras,其余的默認勾選即可。然后點Install packages(共23個),下圖2
分別選中紅框點擊Accept License,點擊Install,等待安裝完成。
(2.2)配置Android SDK的環境變量。終端執行:
cd open -e .bash_profile 在文件末尾中加入以下語句並保存,把其中的/Users/xxx/android-sdk-macosx換成你上面解壓的android sdk地址(一般都是放在/Users/xxx/下),29.0.3換成你的安裝版本 #sdk export ANDROID_HOME=/Users/xxx/android-sdk-macosx export PATH=$PATH:$ANDROID_HOME/tools export PATH=$PATH:$ANDROID_HOME/platform-tools #aapt AAPT_HOME=/Users/xxx/android-sdk-macosx/build-tools/29.0.3 export AAPT_HOME export PATH=$PATH:$AAPT_HOME 保存退出,然后終端執行 source .bash_profile 終端輸入adb檢查是否安裝好,如下圖:
三.安裝python3.
因為Mac自帶python2.7,在終端直接輸入python -V:
localhost:~ wangyadong$ python -V
Python 2.7.10
python官網下載。 https://www.python.org/downloads/mac-osx/
下載完成后,點擊安裝文件,一直點擊繼續進行安裝就可以,安裝完成后,可以在終端查看版本。
localhost:~ wangyadong$ python3 -V Python 3.6.5
在Launchpad中多了兩個app,如圖:
安裝成功后,在終端輸入:
localhost:~ wangyadong$ which python3 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 這個就是剛才安裝的python3的路徑
或者使用homebrew安裝,直接在終端執行
brew install python3 安裝完成后,具體路徑是:/usr/local/Cellar/python3/3.6.0。不過不推薦用這種方式安裝
四.安裝appium-desktop
下載地址 http://pan.baidu.com/s/1jGvAISu,https://github.com/appium/appium-desktop/releases/tag/v1.17.1-1, 我用的是AppiumDesktop_1.7.1,下載后安裝Appium-1.7.1.dmg即可。安裝成功后的圖標如圖:
五. 安裝相關插件
(5.1)安裝node:node是安裝npm的前置條件。終端執行:
localhost:~ wangyadong$ brew install node
localhost:~ wangyadong$ sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
localhost:~ wangyadong$ pip3 install Appium-Python-Client
localhost:~ wangyadong$ cnpm install -g appium-doctor
localhost:~ wangyadong$ appium-doctor --android
發現如下錯誤(據說不影響正常功能,反正我沒再繼續安裝):
六.安裝android模擬器(二選一:mac推薦使用網易mumu,appium-desktop更新到最新版之后不支持安卓5.0以下版本,夜神mac最新版本自帶的是安卓4版本)
夜神下載地址:https://www.yeshen.com/
adb devices
List of devices attached
adb devices
List of devices attached 127.0.0.1:62001 device
adb devices
List of devices attached
adb connect 127.0.0.1:22471
adb devices
List of devices attached emulator-5554 device



"platformName": "Android",
"platformVersion": "7.1.2", 點擊start session報錯如下圖時,是因為填寫的版本號不對,只需修改成錯誤提示中紅框的版本號即可。
"deviceName": "127.0.0.1:62001", 上面執行命令:adb devices 返回的名字
"appActivity": ".activity.LoginActivity",
"noReset": true,
"appPackage": "com.tencent.mobileqq"

adb shell
logcat | grep cmp=
Last login: Fri Apr 17 23:08:27 on ttys000 localhost:~ wangyadong$ adb shell dream2qltechn:/ # logcat | grep cmp= 04-17 23:40:16.781 7963 7963 D NetConnInfoCenter: receive broadcast Intent { act=com.tencent.mobileqq.msf.startmsf flg=0x10 pkg=com.tencent.mobileqq cmp=com.tencent.mobileqq/.msf.core.NetConnInfoCenter } 04-17 23:41:42.879 2154 2520 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.tencent.mobileqq/.activity.SplashActivity bnds=[714,448][890,688] (has extras)} from uid 1000 on display 0 04-17 23:41:43.427 2154 3769 I ActivityManager: START u0 {flg=0x40000 cmp=com.tencent.mobileqq/.activity.LoginActivity (has extras)} from uid 10037 on display 0 04-17 23:41:43.970 8198 8198 D NetConnInfoCenter: receive broadcast Intent { act=com.tencent.mobileqq.msf.startmsf flg=0x10 pkg=com.tencent.mobileqq cmp=com.tencent.mobileqq/.msf.core.NetConnInfoCenter }
appActivity:.activity.LoginActivity
app/appPackage:com.tencent.mobileqq