热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于iOS真机的Appium自动化测试

必要条件XCode6.0,7.1.1(注意Appium并不一定支持最新版本的Xcode)MacOSX10.10or更高,建议使用10.11.1Xco

必要条件

XCode >= 6.0, 7.1.1(注意Appium并不一定支持最新版本的Xcode)
Mac OS X 10.10 or 更高, 建议使用10.11.1

Xcode 安装
APP Store安装
注意事项: Xcode 安装包很大(5G左右),Xcode移动到应用程序(10G左右)所以一定要有足够的空间来安装,Xcode安装完启动,有时候会卡在"正在检验Xcode"其实不是卡,是本生需要很长时间,耐心等待就可以,大概3-5分钟。

目录

Appium安装

IOS 设置



Appium安装

第一种安装方式:使用brew和node安装
查看brew,node是否安装

$brew -v
Homebrew 0.9.5 (git revision 9107; last commit 2016-01-19)
$ node -v
v5.3.0
$ npm install -g appium #安装appium
$ appium  #启动appium
$ npm install -g appium-doctor # 安装appium-doctor


检查appium-doctor是否安装成功

$ appium-doctor


这种安装经常出现下面的问题

  • 使用非root权限,安装会出现下面问题

$ npm install -g appium
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/appium'
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/appium']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/appium',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/appium',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53',
npm ERR! 'Object.oncomplete (fs.js:107:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 13.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "appium"
npm ERR! cwd /Users/test2/temp
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/appium
npm ERR! fstream_path /usr/local/lib/node_modules/appium
npm ERR! fstream_type Directory
npm ERR! fstream_class DirWriter
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/appium'
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/test2/temp/npm-debug.log
npm ERR! not ok code 0

出现上面问题以后使用sudo权限安装appium, appium启动会出现下列问题

$ appium
error: Appium will not work if used or installed with sudo. Please
rerun/install as a non-root user. If you had to install Appium using
sudo npm install -g appium, the solution is to reinstall Node using a
method (Homebrew, for example) that doesn't require sudo to install
global npm packages.
localhost:temp test2$ sudo appium
error: Appium will not work if used or installed with sudo. Please
rerun/install as a non-root user. If you had to install Appium using
sudo npm install -g appium, the solution is to reinstall Node using a
method (Homebrew, for example) that doesn't require sudo to install
global npm packages.

所以安装Appium还是按照普通用户来安装,不要使用sudo/root权限安装,出现上面的权限问题,可以给目录加个权限,就可以安装成功

$ sudo chmod -R 777 /usr/local/lib


第二种安装方式:下载appium.dmg安装
安装以后显示如下

图片

IOS 设置

1、使用官方提供的TestAPP执行第一个测试
下载地址:https://github.com/appium/sample-code

$git clone git@github.com:appium/sample-code.git


2、使用官方提供 的TestApp设定Appium_IOS
地址:sample-code/sample-code/apps/TestApp/build/release-iphonesimulator/TestApp.app

iOS模拟器/真机信息配置
正常情况下apple的包是.ipa文件,那里因为所有的ios设备使用的都的ARM处理器,但是我们现在配置的是模拟器的设备,而模拟器是基于Intel处理器,处理架构不一样,所以在编辑生成包的时候请选择.app文件。

请看下图的配置参数

图片

 

App path就是apple包的路径:

设置为:sample-code/sample-code/apps/TestApp/build/release-iphonesimulator/TestApp.app

  • BunleID就是苹果开发的bundle identifier,仅在真机测试时勾上并填写

  • UDID苹果设备的唯一ID,仅在真机测试时勾上并填写

  • Force Device 要测试的iphone设备

  • Platform Version 要测试的iphone的版本好(设备和版本号一定要匹配)

以上配置好后,点击launch按钮,启动appium服务,启动成功后,可看到如下信息

图片

接下来点击那个类似搜索的按钮来启动client端

如果启动的时候报如下错误你的设备和版本不对的原因,仔细看下log就发现了, 修改一下设备和版本信息重新启动

图片

错误Log

图片

修改设备信息

图片

设置好重新启动,启动成功如下显示
 

图片

图片

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接免费拿走:

① 2000多本软件测试电子书(主流和经典的书籍应该都有了)

② 软件测试/自动化测试标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白学习)


⑤ Python学习路线图(告别不入流的学习) 

上图的资料 在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)

可以自助拿走,群号953306497(备注“csdn111”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。


推荐阅读
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
author-avatar
龙叔君_541
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有