在Mac OSX 上配置Appium+Android自动化测试环境

少年乘勇气,百战过乌孙。这篇文章主要讲述在Mac OSX 上配置Appium+Android自动化测试环境相关的知识,希望能为你提供帮助。
前提准备开始正文之前,你需要准备好一些基本条件:

  1. 安装好Mac OSX 操作系统的设备
  2. 能够访问中国局域网以外资源的方法(没有也行,但很痛苦)
  3. 已经安装好  homebrew
  4. 已经安装好 python3.x
  5. 已经安装好 java Runtime Environment
安装 android Studio / SDK本文主要为了测试安卓应用,那么这里我们就需要安装Android Studio或者Android SDK。
  • Android Studio - 完整的开发以及测试工具,需要梯子
  • Android SDK - 足够完成自动化测试,通过homebrew安装
如果只是为了自动化测试我建议安装SDK足矣,使用brew命令安装。
brew  install  android-sdk

【在Mac OSX 上配置Appium+Android自动化测试环境】在国内使用brew可以事先配置好国内源,速度会快很多。
如果有梯子建议选择Android Studio,安装方法很简单,官网下载后一路Next,启动后会让你把SDK等等一系列依赖都装好,一步到位。
实际安卓Android Studio比较好,一步到位,可以到sdk等都安装好,安卓studio安装过程后启动时会出现proxy错误,这里点击取消,然后安装完,打开后,在sdk manager中设置代理 
Android SDK 在线更新镜像服务器资源:
大连东软信息学院镜像服务器地址:
-  http://mirrors.neusoft.edu.cn  端口:80
北京化工大学镜像服务器地址:
- IPv4:  http://ubuntu.buct.edu.cn/  端口:80
- IPv4:  http://ubuntu.buct.cn/  端口:80
- IPv6:  http://ubuntu.buct6.edu.cn/  端口:80
上海GDG镜像服务器地址:
-  http://sdk.gdgshanghai.com  端口:8000
亲测第一个好用
准备Android 模拟器或者使用真机如果SDK已经安装完毕,应该可以使用adb命令来检查可用的模拟器或者已经连接到电脑上的实体手机。
adb devices

如果不知道adb工具在哪,可以先在命令行里通过find搜索。
find /Users -name adb# 搜索用户目录 find / -name adb# 搜索全盘

找到之后可以把 adb 目录加入PATH,方便后续使用。
安装AppiumAppium 可以通过多种方式安装。
方式一:使用 NodeJS 安装
首先通过brew安装nodejs:
brew install  node

配置国内源,在个人目录下新建一个.npmrc文件,写入:
registry=https://registry.npm.taobao.org/

开始安装Appium:
npm install -g appium npm install -g appium-doctor

Appium-doctor 可以帮你诊断测试环境,建议安装。
方式二:下载Appium桌面版安装
官方的Appium桌面安装包可以从github下载,需要梯子。
  • https://github.com/appium/app...
下载到的dmg文件双击装载,把Appium拖到Application里完成安装。
安装 Appium-Client本文只讨论Python实现的Appium测试,所以你只需要允许以下命令:
pip  install  Appium-Python-Client

如果你已经安装了appium-doctor,那么你只要运行appium-doctor命令就可以知道你还需要设置哪些环境变量,

[email  protected] ~> appium-doctor info AppiumDoctor Appium Doctor v.1.4.3 info AppiumDoctor ### Diagnostic starting ### info AppiumDoctor? The Node.js binary was found at: /usr/local/bin/node info AppiumDoctor? Node version is 7.10.0 info AppiumDoctor? Xcode is installed at: /Applications/Xcode.app/Contents/Developer WARN AppiumDoctor? Xcode Command Line Tools are NOT installed! info AppiumDoctor? DevToolsSecurity is enabled. info AppiumDoctor? The Authorization DB is set up properly. WARN AppiumDoctor? Carthage was NOT found! info AppiumDoctor? HOME is set to: /Users/tobyqin info AppiumDoctor? ANDROID_HOME is set to: /Users/tobyqin/Library/Android/sdk/ info AppiumDoctor? JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home info AppiumDoctor? adb exists at: /Users/tobyqin/Library/Android/sdk/platform-tools/adb info AppiumDoctor? android exists at: /Users/tobyqin/Library/Android/sdk/tools/android info AppiumDoctor? emulator exists at: /Users/tobyqin/Library/Android/sdk/tools/emulator info AppiumDoctor? Bin directory of $JAVA_HOME is set info AppiumDoctor ### Diagnostic completed, 2 fixes needed. ### info AppiumDoctor info AppiumDoctor ### Manual Fixes Needed ### info AppiumDoctor The configuration cannot be automatically fixed, please do the following first: WARN AppiumDoctor - Please install Carthage. Visit https://github.com/Carthage/Carthage#installing-carthage for more information. info AppiumDoctor ### info AppiumDoctor info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!

其实你不一定需要把通过所有检查项,如果只是为了完成Android的Appium测试,只要确保ANDROID_HOME 和 JAVA_HOME 正确配置,另外SDK Tools 和Platform Tools都加入PATH就基本完成了。可以参考我个人目录下的.bash_profile设置:
export ANDROID_HOME=~/Library/Android/sdk/ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Homeexport PATH=~/bin:$PATH:/usr/local/bin:$ANDROID_HOME/platform-tools/:$JAVA_HOME/bin


开始编写自动化测试
from appium import webdriverdesired_caps = {} desired_caps[‘platformName‘] = ‘Android‘ desired_caps[‘platformVersion‘] = ‘7.1.1‘ desired_caps[‘deviceName‘] = ‘Android Emulator‘ desired_caps[‘appPackage‘] = ‘com.android.dialer‘ desired_caps[‘appActivity‘] = ‘DialtactsActivity‘driver = webdriver.Remote(‘http://localhost:4723/wd/hub‘, desired_caps) driver.find_element_by_id(‘com.android.dialer:id/search_box_collapsed‘).click() search_box = driver.find_element_by_id(‘com.android.dialer:id/search_view‘) search_box.click() search_box.send_keys(‘hello toby‘)




















    推荐阅读