一、python 环境准备
Mac 自带 Python 环境,一般为 2.7 版本。
1、查看当前系统默认的Python路径
which python
==> /usr/bin/python
2、查看当前 python 版本
python --versio
==> Python 2.7.10
3. 安装 python2 的包管理工具 pip
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
==> easy_install pip
4、安装 brew包管理器
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
5、安装 Python3 版本(如有需要)
搜索 Python3
brew search python3
安装 Python3
brew install python3
运行Python3
python3
注意:不要删除python2,不要删除python2,Mac 系统有些自带App需要Python2支持。
6、安装 requests模块
Python2
sudo pip install requests
Python3
sudo pip3 install requests
二、安装 Xcode和 Android SDK环境
1、Mac Xcode 环境配置
进入App Store,下载Xcode,傻瓜安装不用多将
2、Mac 下 Android SDK 环境配置
官方下载地址:
https://developer.android.com/studio/index.html
国内镜像地址:
http://tools.android-studio.org/index.php/85-tools/110-androidsdk-mirrors
http://www.androiddevtools.cn/
官网最底部下载对应的SDK工具包就可以了,官网大概率被墙,进去不了,去镜像网站下。
下载并安装完成后,配置环境变量
# vim /etc/profile
export ANDROID_HOME=/Users/macbook/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
注意:/Users/macbook/Library/Android/sdk 路径需要时自己的安装路径
3、配置 Java 环境
下载 JDK,并安装,然后配置环境变量,如下:
# vim /etc/profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新配置文件
source /etc/profile
三、Mac 下安装 Appium
Mac 下的 Appium 安装比较繁琐,因为他对iOS的支持不怎么友好,有很多的依赖需要安装,需要细心的一步一步的配置。
1、 安装 brew (已经安装,请忽略)
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、 安装 libimobiledevice
Appium iOS真机支持依赖一个重要的第三方软件套件 libimobiledevice,使用 Homebrew 可以轻易地安装好。
brew install libimobiledevice –HEAD
3、安装 carthage
为了在Xcode 8(其中包括所有iOS 10+的测试)使用iOS真机做自动化,你要安装 Carthage 去做依赖管理:
brew install carthage
4、安装 node.js
nodejs下载地址:https://nodejs.org/en/download/
下载pkg文件,然后一键安装
5、安装 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
6、安装 ios-deploy
作为对 libimobiledevice 依赖的补充,Appium 对 iOS 9.3 及以上和 Xcode 8 及以上的支持依赖 ios-deploy,ios-deploy可以用来安装卸载 ios应用。
cnpm有个问题,就是安装的node_module 会全部放在当前路径下。所以我们使用 cnpm 的时候,需要切换到/usr/local/lib(node模块默认安装路径)
在终端输入:
cd /usr/local/lib
cnpm install -g ios-deploy
7、安装 xcpretty
gem install xcpretty
安装时间会比较长,如果没反应,需要耐心等待。安装失败建议切换目录重新安装。也可以更换 gem 源:
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
如果 gem 版本过低需要升级。
8、安装 Appium
8.1、安装 Appium-block 版本
cnpm install -g appium@1.12.1
注意:@1.12.1可以去除,去除后会自动安装最新版本
注意:安装 appium-desktop 版本,可以直接用来获取app的页面元素信息,建议另安装该版本或者直接安装 appium-desktop 版本,进入appium官网下载安装即可。
8.2、安装appium-doctor
用于检测 appium 运行环境
npm install appium-doctor -g
安装完成后,执行 appium-doctor 检查 appium 安装是否完全(如果提示找不到文件,则进入appium安装目录/appium-doctor/目录下,执行./appium-doctor.js),检查结果如下:
上图表明环境已配置完成,如果环境检查出现 X ,检查是否安装对应的程序和环境变量的配置。
9、安装 appium-xcuitest-driver 依赖
进入 Appium 安装目录,查找目录下的 WebDriverAgent,进入 WebDriverAgent 后,执行以下命令
mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh
10、编译WebDriverAgentLib
进入 WebDriverAgent 目录,找到 WebDriverAgent.xcodeproj,双击打开,默认就是用Xcode打开。切换到 WebdriverAgentLib,编辑如下图内容,然后点击左上角那个播放按钮进行编译,build succeed 就可继续进行。(关于 team,可即时注册个人开发者账号,激活后填入即可,此处会返回10位ID,后面连接真机时会用到 )
11、编译WebDriverAgentRunner
首先编辑general里的内容,和上面大同小异,也是需要勾选自动签名和选择开发者帐号。配置好后点击编译按钮,build succeed 就可继续进行。
12、获取手机的udid
将手机通过usb连上电脑,然后打开itunes,然后选中链接的iPhone,点击一下序列号,然后会弹出 udid 。
13、建立 WebDriverAgent 服务
手机开启USB调试模式与Mac 在同一网络,关闭 xcode,进入WebDriverAgent 文件夹。
cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真机的udid‘ test
这时候可以看到手机上多了一个WebdriverAgent的app,则表示环境已经配置成功。第一次会提示不受信任的开发者,需要进入设置-通用-设备管理(描述文件) 信任你的 Apple id。
14、Appium 获取元素
Mac 的Appium 获取元素需要安装appium-desktop版本。
14.1 启动 AppiumDesktop
打开 appium,启动 appium server
点击右上角放大镜,打开 Appium server 设置
进入 Automatic Server - Desired Capabilities 中录入对应的配置信息,如下图
14.2 Desired Capabilities 参数
填写以上参数,等待启动,即可看到测试 app 的全部元素信息。
{ "platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 7",
"automationName": "XCUITest",
"app": "/path/to/my.app"}
编写好通用的Desired Capabilities 配置信息会自动保存到Saved Capability Sets。连接手机后,点击 Start Session按钮,开始会话。
参数说明:
根据需求添加必要的参数,常用参数如下:
"automationName": "Appium", -- 可选,搜索引擎,appium(默认)还是Selendroid
"platformName": "iOS", -- 必填,应用平台,iOS, Android, or FirefoxOS
"platformVersion": "10.3", -- 必填,测试的系统版本,设置两位就可以了
"deviceName": "iPhone7", -- 必填,使用的手机或模拟器类型,iPhone Simulator, Android Emulator, Galaxy S4
"app": "com.apple.calculator", -- Android可选,iOS必填,应用的绝对路径,与browserName属性冲突,
"appPackage" : "com.test.now", -- Android未填app参数必填,运行的 Android 应用的包名,
"appActivity": "com.sng.LauncherActivity", -- Android未填app参数必填,Activity 的名字是指从你的包中所要启动的 Android acticity,
"bundleId":"io.appium.TestApp", -- iOS未填app参数必填,用于在真实设备中启动测试,使用其他需要 bundle ID 的关键字启动测试。
"browserName":"Chromium", -- 做自动化时使用的浏览器名字, 与app 冲突,
"udid":" ", -- 多客户端链接多台手机时必填,连接真机的唯一设备号,iOS通过iTunes拷贝过来,IOS真机测试必填,
"noReset":"true" -- 在当前 session 下不会重置应用的状态, 是否清除应用缓存。默认值为false,
"fullReset":"false" -- (iOS)删除所有的模拟器文件夹。(Android) 要清除 app 里的数据,请将应用卸载才能达到重置应用的效果。在 Android, 在 session 完成之后也会将应用卸载掉。默认值为false ,
"xcodeOrgId":"123ADE4Y56", -- 十位字符的组织ID是苹果开发证书的组织单位,appium可以通过十位组织单位ID找到相应的组织,IOS真机测试必填(注意: 连接真机时,测试app的打包签名证书必须要与xcodeOrgId里的一致,否则会报证书错误,错误代码是65)
"xcodeSigningId": "iPhone Developer", -- iOS真机测试必填,这里参数是固定的,就这样写,
"wdaLocalPort":"8100" -- 默认手机连接MAC本使用的端口,默认是8100,非必填
"unicodeKeyboard":"True" -- 使用 Unicode字符,输入中文必须参数
"resetKeyboard":"True" -- 重置键盘,输入中文必须参数
更多详细的参数请参考官网:Caps - Appium
14.3 The Inspector
会话连接成功后就会展示 The Inspector,它是应用程序状态的可视化表示。
Select Elements:选取元素,可选取左边页面上的元素。获取元素的ID或者xpath等等类似的信息。选中某一元素后,该元素的详细信息会展示在右侧的视图中,并且可以在右侧选择要对此元素进行的操作,包括tap、sendkey、clear。
Swipe By Coordinates:滑动,在截图页面上定位两个点,页面将会根据定点滑动。
Tap By Coordinates:点击,可点击左边页面上的元素。
Back:相当于返回按钮
Refresh Source & Screenshot:刷新当前视图
Search for element:寻找元素,当元素无法通过 Select Elements 并无法选取到,可以使用Search for element进行元素的查找。
Start Recording:录制,开始录制你的测试脚本,注意:它是学习工具,不是代码生成工具。