一、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/

http://npm.taobao.org/

官网最底部下载对应的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官网下载安装即可。

下载地址:appium/appium-desktop

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:录制,开始录制你的测试脚本,注意:它是学习工具,不是代码生成工具。

Appium Mac系统 自动测试环境搭建的更多相关文章

  1. 『与善仁』Appium基础 — 1、Android系统的测试环境搭建

    目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...

  2. 如何搭建基于C#和 Appium 的 Android自动测试环境

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使 ...

  3. Appium robotframework-appium (ios 客户端测试)环境搭建

    一. 简介 1.1摘要 本人测试新人,最近在搞ios客户端的自动化,准备采用robotframework-appium来实现自动化测试,一边学习一边总结,此安装说明文档是基于mac系统10.11版本, ...

  4. Appium与python自动测试环境及demo详解

    App--UI自动化这种高端的名词已经被越来越多的人所高呼,可是从实际角度来讲,个人觉得还是有点鸡肋,不如接口自动化敏捷度高,工作量 也是接口自动化的好几倍.但是,[划重点了]  在技术时代中,作为测 ...

  5. MAC系统 -java开发环境搭建

    MAC - java开发环境搭建 软件: jdk Intellij IDEA:java开发工具 maven:jar包管理 git :源码管理 sourceTree :源码管理GUI客户端 Studio ...

  6. [转] Mac系统Robot Framework环境搭建

    一.由于Mac系统下自带python,所以不需要再进行安装了 二.关闭mac电脑的sip, 1.重启 Mac并长按 Cmd + R 2.打开终端,执行csrutil disable命令 3.重启电脑 ...

  7. Mac系统STF自动化环境搭建及部署踩坑记录

    因为公司需要寻找一个免root的自动化测试方案,所以以前做的老方案需要被替代.一阵搜寻找到了这个框架,但是部署起来很是折腾,搞了一下午终于搞定,顺便记录一下过程,有需要的自取. 转载请注明出处:htt ...

  8. MAC 系统java开发环境搭建教程

    1.在安装JDK之前,先查看下自己电脑是否已经安装了JDK. 打开终端,输入java -version并回车.     从上图中可以看出我们已安装了,JDK 8.如果这个版本是你需要的版本,可直接看4 ...

  9. 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结

    Appium 1.6.3 在Xcode 8 (真机)测试环境搭建经验总结 关于 Appium 1.6.3 在Xcode 8, 1真机上环境搭建问题更多,写此文章,供大家参考,让大家少走弯路. 在开始i ...

随机推荐

  1. 插入blob字段的简单方法

    1. 按普通方法组织插入语句 ,f2为Blob型字段 insert into table (f1,f2,f3) values ('a',:para,'c') 2.对应每个blob型字段,OracleC ...

  2. Android Animation动画实战(二):从屏幕底部弹出PopupWindow

    在这篇文章之前,我已经陆陆续续写了几篇博客,介绍了Android Animation是如何使用的,有还不明白的,可以点击查看: 1. Android Animation动画详解(一): 补间动画 2. ...

  3. Bert源码阅读

    前言 对Google开源出来的bert代码,来阅读下.不纠结于代码组织形式,而只是梳理下其训练集的生成,训练的self-attention和multi-head的具体实现. 训练集的生成 主要实现在c ...

  4. Python--day20--模块的导入

    1,模块的导入步骤: 2,,给文件起别名的用处: 重命名之后,原来的名字就不能用了 3,虽然这样写可以,但是不推荐,代码可读性不强,以后代码的修改成本也增加: 4,模块的导入顺序: 5,导入变量名的两 ...

  5. lavarel 响应宏

    宏的概念 计算机里的宏是批量处理的意思.比如我们在进行文本编辑的时候,打错字会有回退的功能——control+z:但是这是我们的键盘操作,计算机在进行处理的时候是不能理解的,他必须对最近两次操作进行比 ...

  6. uni-app学习记录05-二级联动及获取DOM对象

    <template> <view> <view class="id"> <view class="left"> ...

  7. const(每个对象中的常量), static const(类的编译时常量)

    1 每个对象中的常量 --- const数据成员 const限定,意味着“在该对象生命周期内,它是一个常量”. 关键字const 使被限定的量为常量 在该类的每个对象中,编译器都为其const数据成员 ...

  8. call undefined function openssl_cipher_iv_length

    现象: 访问localhost/blog/public时,报错在verdor/framework/src/Illuminate/Encryption/Encrtpter.php的84行,找不到open ...

  9. Springboot学习笔记(一)—— 安装

    springboot越来越流行了,相比较于springMVC,springboot采用了一种约定大于配置的理念,可以一键安装,一键运行,一键部署,内置tomcat,省去了一大堆配置的时间,并且,spr ...

  10. java 内省综合案例和Beanutils工具包

    演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...