1、下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  #下载
$ brew update #更新
$ brew -v
Homebrew 1.1.5
Homebrew/homebrew-core (git revision e151b; last commit 2016-12-26)

2、使用homebrew来安装node.js : Node.js教程 node采用C++编写,是一个JavaScript的运行环境,因为JS是脚本语言需要一个解析器才能运行,对于写在HTML页面的JS,浏览器本身就是解析器,对于需要单独运行的JS,Node.js就是解析器。

$ brew install node
$ node -v
v7.3.0

3、安装npm: NPM 使用介绍 是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

$ brew install npm

4、使用npm来安装appium,2017/01/03目前最新的版本是 1.6.3 ,当然也可以在 Macos下bitbucket下载appium客户端,但是坑人的是最新版本是 1.5.3 支持的还只是 iOS10 以下的 UIAutomation 框架基础上测试,而 iOS10 以后苹果使用的却是基于 XCUITest ,所以只能采用npm安装咯。但是因为国内墙太高而使用npm却是从国外服务器下载,有时候使用npm需要非常长的时间,更多时候是失败,推荐使用cnpm来安装:淘宝 NPM 镜像 10分钟同步npmjs.org镜像,使用方式和npm完全一致

$ npm install cnpm -g --registry=https://registry.npm.taobao.org
$ npm view appium versions #查看appium所有的版本号

5、使用cnpm安装appium和appium-doctor:

$ cnpm install -g appium --no-cache
$ cnpm install -g appium
$ cnpm install -g appium-doctor

6、检查appium环境检测:

$ appium-doctor
info AppiumDoctor Appium Doctor v.1.2.5
info AppiumDoctor ### Diagnostic starting ###
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.
info AppiumDoctor The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor Carthage was found at: /usr/local/bin/carthage
info AppiumDoctor HOME is set to: /Users/denglibing
WARN AppiumDoctor ANDROID_HOME is NOT set!
info AppiumDoctor JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
WARN AppiumDoctor adb could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor android could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor emulator could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor Bin directory for $JAVA_HOME is not set
info AppiumDoctor ### Diagnostic completed, 6 fixes needed. ###
info AppiumDoctor
info AppiumDoctor ### Manual Fixes Needed ###
info AppiumDoctor The configuration cannot be automatically fixed, please do the following first:
WARN AppiumDoctor - Manually configure ANDROID_HOME.
WARN AppiumDoctor - Manually configure ANDROID_HOME and run appium-doctor again.
WARN AppiumDoctor - Add '$JAVA_HOME/bin' to your PATH environment
info AppiumDoctor ###
info AppiumDoctor
info AppiumDoctor Bye, run appium-doctor again when all manual fixes have been applied!
info AppiumDoctor

常见问题解决:

 Xcode Command Line Tools are NOT installed!
$ xcode-select --install #按照提示安装即可 Carthage was NOT found!
$ brew install carthage #carthage:类似cocoapods管理第三方代码,自动将工程编译为动态库,所以仅支持iOS8以上


WARN AppiumDoctor   ANDROID_HOME is NOT set!
但是建议安装安装编译器,可以解决其他Android环境的其他问题 AndroidStudio(https://developer.android.com/studio/index.html?hl=zh-cn)
设置 ANDROID_HOME 路径:
http://stackoverflow.com/questions/19986214/setting-android-home-enviromental-variable-on-mac-os-x
设置 JAVA_HOME 路径:
http://stackoverflow.com/questions/6588390/where-is-java-home-on-osx-sierra-10-12-el-captain-10-11-yosemite-10-10 JAVA_HOME问题:
当前最新JDK版本下载地址 Java SE Development Kit 8u111 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) .bash_profile文件:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
export ANDROID_HOME=/Users/denglibing/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:${JAVA_HOME}/bin

7、安装appium客户端,上面的操作只是安装了server端,接下来需要安装测试代码运行所依赖的客户端,我们以python为例:

git clone https://github.com/appium/python-client
cd python-client
#谢谢 @GentHuang 提醒
sudo python setup.py install

如果提示下面错误:

python setup.py install 

Password:
Traceback (most recent call last):
File "setup.py", line 19, in <module>
from appium.common.helper import library_version
File "/Users/denglibing/HDProject/GithubProject/python-client/python-client/appium/common/helper.py", line 20
def extract_const_attributes(cls: type) -> Dict[str, Any]:
^
SyntaxError: invalid syntax

需要使用如下命令安装(语法错误,需要使用python3,没有请自行下载安装):

python3 setup.py install 

8、对于 iOS10 以上的测试,需要下载安装 appium-xcuitest-driver 驱动:Appium iOS driver, backed by Apple XCUITest , 当然也可以在 /usr/local/lib/node_modules/appium/node_modules/.2.5.1@appium-xcuitest-driver/WebDriverAgent/ 找到该项目,执行 carthage update , 选择 WebDriverAgentRunner 这个target编译即可。

其他相关的安装:

$ ./Scripts/bootstrap.sh  #感谢网友 @托托李_742f 的提醒,添加该命令解决很多人编译WebDriverAgent不通过的问题。
$ brew install libimobiledevice --HEAD # install from HEAD to get important updates
$ brew install ideviceinstaller # 只是对iOS9有用 $ npm install -g ios-deploy # iOS10 以后的版本安装ios-deploy
$ sudo gem install xcpretty # 真机需要安装 xcpretty

不太熟悉WebDriverAgent的可以看看这个博客:

https://testerhome.com/topics/7220

9、下载测试代码并且测试,官网上的测试代码坑很多,这个问题我困扰我好久。一开始还以为是自己那个环境出问题还是流程不对,结果真的只是官网测试代码本身问题,当然可以自己编写代码测试咯,也可以下载我的一个简单的 erduoniba/appium_ios_sample_code

先启动 appium 服务器:

$ appium &

再执行模拟器的python客户端的代码测试

$ cd sample-code/apps/HHH

#在sample-code/apps/HHH/build/Release-iphonesimulator/得到HHH.app包
$ xcodebuild -sdk iphonesimulator
Build settings from command line:
SDKROOT = iphonesimulator10.2 === BUILD TARGET HHH OF PROJECT HHH WITH THE DEFAULT CONFIGURATION (Release) ===
...
...
...
Signing Identity: "-" /usr/bin/codesign --force --sign - --timestamp=none /Users/denglibing/Desktop/sample-code/apps/HHH/build/Release-iphonesimulator/HHH.app ** BUILD SUCCEEDED ** $ cd sample-code/examples/python
$ python ios_simple_simulator.py # 执行测试脚本时,会遇到 HTMLTestRunner 错误的问题,这个是因为第二篇也对这个脚本进行了测试,请移步到 这里http://www.jianshu.com/p/a673b93d1f98 可以快速解决并输出测试结果
test_scroll (__main__.SimpleIOSTests) ... ok ----------------------------------------------------------------------
Ran 1 test in 30.421s OK

对于真机,可能要麻烦些,安装 appium-xcuitest-driver 驱动后,生成在真机上运行的包:

参考资料可以看官网的说明 部署ios-app-到手机上

# 在 apps/HHH/build/Release-iphoneos/HHH.app 得到 release 包
$ xcodebuild -sdk iphoneos -target HHH -configuration Release CODE_SIGN_IDENTITY="iPhone Distribution: Shenzhen XXXX Technology Co., Ltd. (B9FH944VTE)"
PROVISIONING_PROFILE="08f04032-ca2e-4bb5-b1ba-c32778115f2e"

关于怎么设置 CODE_SIGN_IDENTITYPROVISIONING_PROFILE 如何查看 ,可以选择下图所示的 Development Team 一行, control+c 然后 复制出去即可

 
 

接下来连上真机 执行测试用例代码:

$ cd sample-code/examples/python
$ python ios_simple_device.py
test_scroll (__main__.SimpleIOSTests) ... ok ----------------------------------------------------------------------
Ran 1 test in 30.421s OK

10:一些很有帮助的资料

很好的论坛 https://testerhome.com

appium源码地址: https://github.com/appium/appium

appium官网地址:http://appium.io/

appium中文说明文档:http://appium.io/slate/cn/master/?ruby#about-appium

11、心得:

整体的流程其实不多,但是在macOS10.12搭建appium的环境及测试整个过程着实烦躁,有时候一个小问题就卡1-2天也不好说,而且官网上的文档和测试代码已经部分误导我走了非常多的歪路。

比如

11.1、开始使用 appium1.5.3的mac客户端,虽然在macOS10.12上也有些问题,确实毕竟GUI用起来非常方便,可惜是基于 UIAutomation 框架来的,然后在iOS10中已经使用了新的框架 XCUITest ,只能废弃;

11.2、关于appium如果搭建啊,进行测试啊相关的文章其实不少,有中文的也有英文的,可能是作者在那个时候测试兼容过,但是iOS10上真的很多是误导了,而且搭建的流程我不建议阅读 appium中文说明文档 ,毕竟年代太久远了。倒是可以在 appium源码地址 上多多发现类似的问题或者多多提问,作者及团队人员很热血

11.3、还是环境问题,动不动就会失败,这个时候只能有耐心的多多看看log日志了,log少什么就满足他们,边边角角的一些依赖资源也可以了解了解,毕竟程序员需要耐得住寂寞,上面的流程基于当前最新的开发环境 Xcode8.2iOS10.2

作者:hd_hd
链接:https://www.jianshu.com/p/05943804c25e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

appium1-macOS10.12下如何丝滑的使用appium?的更多相关文章

  1. 使用 CSS3 打造一组质感细腻丝滑的按钮

    CSS3 引入了众多供功能强大的新特性,让设计和开发人员能够轻松的创作出各种精美的界面效果.下面这些发出闪亮光泽的按钮,很漂亮吧?把鼠标悬停在按钮上,还有动感的光泽移动效果. 温馨提示:为保证最佳的效 ...

  2. Mac10.12下Python3.4调用oracle

    最近,由于项目的短信平台对其它浏览器兼容,只支持IE,但是我们移动端自动化需要测试iphone手机,必须要连接MAC系统下,众所周知,MAC对IE的不友好性,故没办法通过短信平台在UI层自动化获取短信 ...

  3. 让你的app体验更丝滑的11种方法!冲击手机应用榜单Top3指日可待

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专栏 一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求,这样 ...

  4. 制作macOS10.12系列的系统镜像文件

    制作macOS10.12系列的系统镜像文件步骤,过程也比较简单,十来个命令.以10.12.6为例,首先,在苹果商店下载系统安装包APP,或者网上下载后把安装APP复制到  应用程序  文件夹. 然后打 ...

  5. 《你还在写sql语句吗?》人生苦短,进入MybatisPlus的丝滑体验

    一.发展历程 依稀记得大学期间,类中写sql语句的日子,一个sql语句占据了大部分时间,到后来hibernate的出现算是解决了这一痛点.工作 后,我们又接触到了mybatis这样的框架,瞬间感觉这个 ...

  6. 『CDN』让你的网站访问起来更加柔顺丝滑

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  7. Node更丝滑的打开方式

    Node更丝滑的打开方式 1. 使用背景 最近前端的一个项目,使用gulp作为工程化.在运行过程中出现如下错误 gulp[3192]: src\node_contextify.cc:628: Asse ...

  8. eladmin-plus V2.0.0 发布,单表链式调用更丝滑

    一.项目简介 eladmin的mybatis-plus版本,单表使用链式调用,代码更简洁,调用更便捷.目前更新到2021年7月.项目基于 Spring Boot 2.4.2 . Mybatis-plu ...

  9. 如何在pyqt中实现丝滑滚动字幕

    滚动字幕的视觉效果 网上有很多博客介绍了滚动字幕的实现方法,懂得都懂,大部是 Ctrl C + Ctrl V,效果还很差,最后还是得靠自己.主要思路就是通过定时器定时刷新+绘制两段完整的字符串来达到 ...

随机推荐

  1. 使用Xamarin开发移动应用示例——数独游戏(五)保存游戏进度

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 保存进度是移动应用的基本功能,在应用的使用过程中会有各种各样的可能导致使用中 ...

  2. Typora + picgo + Chevereto 优雅地上传图片

    需求:由于经常使用typora写文章,但是配合picgo使用的sm.ms图床,github图床等,速度不稳定,因此我们想要利用自己的服务器搭建自己的图床,将自己文章的图片上传到自己的服务器中,优雅地写 ...

  3. Vue.js之计算属性(computed)、属性监听(watch)与方法选项(methods)

    vue.js官网:https://cn.vuejs.org/v2/guide/components-registration.html 一.计算属性-computed 1. 作用:能够避免数据冗余,通 ...

  4. 常见线程池之 newCacheThreadPool 缓存线程池 简单使用

    package com.aaa.threaddemo; import java.util.concurrent.BlockingQueue; import java.util.concurrent.E ...

  5. Lesson8——Pandas reindex重置索引

    pandas目录 1 简介 重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行.列标签与 DataFrame 中的数据逐一匹配.通过重置索引操作,您可以完成对现 ...

  6. 用Json给表单赋值

    $.extend({ setForm :function(frm,jsonValue) { var obj=$(frm); $.each(jsonValue, function (name, ival ...

  7. DOM Document.readyState 属性

    感谢原文作者:MDN 原文地址:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/readyState 描述 一个document 的 ...

  8. 原生js获取子元素

    感谢原文作者:归一山人 原文链接:https://www.cnblogs.com/guiyishanren/p/12214757.html 获取子元素的方法有 //获取第一个demo类 dom = d ...

  9. 什么是UILabel

    UILabel极其常用,功能比较专一:显示文字 UILabel的常见属性 @property(nonatomic,copy) NSString *text; 显示的文字 @property(nonat ...

  10. kubectl详解

    kubectl详解 目录 kubectl详解 一.陈述式管理 1. 陈述式资源管理方法 2. k8s相关信息查看 2.1 查看版本信息 2.2 查看资源对象简写 2.3 查看集群信息 2.4 配置ku ...