Mac安装Appium+python教程
核心架构: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