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

news2024/10/22 16:27:45

必要条件

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安装

第一种安装方式:使用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权限,安装会出现下面问题

    1. $ npm install -g appium

    2. npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/appium'

    3. npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/appium']

    4. npm ERR! errno: 3,

    5. npm ERR! code: 'EACCES',

    6. npm ERR! path: '/usr/local/lib/node_modules/appium',

    7. npm ERR! fstream_type: 'Directory',

    8. npm ERR! fstream_path: '/usr/local/lib/node_modules/appium',

    9. npm ERR! fstream_class: 'DirWriter',

    10. npm ERR! fstream_stack:

    11. npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23',

    12. npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53',

    13. npm ERR! 'Object.oncomplete (fs.js:107:15)' ] }

    14. npm ERR!

    15. npm ERR! Please try running this command again as root/Administrator.

    16. npm ERR! System Darwin 13.4.0

    17. npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "appium"

    18. npm ERR! cwd /Users/test2/temp

    19. npm ERR! node -v v0.10.32

    20. npm ERR! npm -v 1.4.28

    21. npm ERR! path /usr/local/lib/node_modules/appium

    22. npm ERR! fstream_path /usr/local/lib/node_modules/appium

    23. npm ERR! fstream_type Directory

    24. npm ERR! fstream_class DirWriter

    25. npm ERR! code EACCES

    26. npm ERR! errno 3

    27. npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/appium'

    28. npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23

    29. npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53

    30. npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)

    31. npm ERR!

    32. npm ERR! Additional logging details can be found in:

    33. npm ERR! /Users/test2/temp/npm-debug.log

    34. npm ERR! not ok code 0

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

  1. $ appium

  2. error: Appium will not work if used or installed with sudo. Please

  3. rerun/install as a non-root user. If you had to install Appium using

  4. sudo npm install -g appium, the solution is to reinstall Node using a

  5. method (Homebrew, for example) that doesn't require sudo to install

  6. global npm packages.

  7. localhost:temp test2$ sudo appium

  8. error: Appium will not work if used or installed with sudo. Please

  9. rerun/install as a non-root user. If you had to install Appium using

  10. sudo npm install -g appium, the solution is to reinstall Node using a

  11. method (Homebrew, for example) that doesn't require sudo to install

  12. 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

图片

修改设备信息

图片

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

图片

 图片

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

响应式编程五股票订阅系统实现

响应式编程五 使用StepVerifier测试响应式流StepVerifier要点 使用StepVerifier进行高级测试股票订阅系统数据库表 使用StepVerifier测试响应式流 出于测试目的,Reactor 提供了额外的 reactor-test 模块,该模块提供了 StepVerifier。StepVerifier 提供了…

Android 13 WMS-动画流程

动画的类型如下 IntDef(flag true, prefix { "ANIMATION_TYPE_" }, value {ANIMATION_TYPE_NONE,ANIMATION_TYPE_APP_TRANSITION,ANIMATION_TYPE_SCREEN_ROTATION,ANIMATION_TYPE_DIMMER,ANIMATION_TYPE_RECENTS,ANIMATION_TYPE_WINDOW_ANIMATION,ANIMATION_TYPE_…

以人为本的AI技术升级

我们需要以人为本的技术来提高生产力和投资回报率。 通过在数据标注流程中融合机器学习辅助技术,可以减少数据标注所需的时间、资金和人力。 有很多方法可以防止标注员被模型的预测误导。 在传统的机器学习(Machine Learning)方法下&#…

一篇长文教你进行全方位的使用appium【建议收藏】

随着移动应用的日益普及,移动应用的测试成为了软件开发的重要组成部分。Python,作为一种易于学习,功能强大的编程语言,特别适合进行这种测试。本文将详细介绍如何使用Python进行APP测试,并附带一个实例。 Python 和 A…

Docker快速入门和部署项目

1,Docker是一个,快速构建、运行、管理应用的工具 。 2,前面我们了解过在Linux操作系统的常见的命令以及如何在Linux中部署一个人单体的项目。感受如何呢??? 命令太多了,记不住 软件安装包名字复…

网络学习:数据的封装与解封装

目录 一、数据的封装与解封装 1. 数据的封装过程 2. 数据的解封装过程 二、数据的传输过程 1. 相关概念 2. 网络传输过程中数据封装和解封装模拟 一、数据的封装与解封装 1. 数据的封装过程 数据封装过程,在这里我们举例说明,以两台主机的通信为…

【docker基础学习之】镜像构建

下面是在工作过遇到的一些实际例子,谨以此作为笔记参考 目录 1.背景2. 寻找方案3. 如何解决4.解决步骤4.1 DockerFile4.2 现在要做的 5. 镜像相关命令 1.背景 部署(迁移)项目时发现,项目的excel导出功能报错,错误如下…

ChatGPT数据分析应用——同期群分析

ChatGPT数据分析应用——同期群分析 ​ 同期群分析在一定程度上属于分组分析的一个变种。顾名思义,同期群就是相同时期的群体,同期群分析就是针对相同时期的群体展开分析。接下来我们让ChatGPT解释这个方法的概念并提供相应的案例。发送如下内容给ChatG…

chrome插件webRequest拦截请求并获取post请求体requestBody数据raw内容,解决中文乱码问题

详细使用说明可以看官方文档:https://developer.chrome.com/docs/extensions/reference/api/webRequest?hlzh-cn 拦截操作 想要通过浏览器插件拦截请求的话,需要在manifest.json里面添加webRequet权限: 拦截请求代码放在background.js里面…

力扣--从前序与中序遍历序列构造二叉树

题目: 思想: 首先先序遍历能确定根节点的值,此时查看该值在中序遍历中的位置(如果索引为i),那么i左侧为左子树,i 右侧为右子树。从中序数组中即可看出左子树结点个数为 i,右子树节点…

王道机试C++第 3 章 排序与查找:排序问题 Day28(含二分查找)

查找 查找是另一类必须掌握的基础算法,它不仅会在机试中直接考查,而且是其他某些算法的基础。之所以将查找和排序放在一起讲,是因为二者有较强的联系。排序的重要意义之一便是帮助人们更加方便地进行查找。如果不对数据进行排序,…

ACM题解Day10|总结篇|进制转化,GCD ,LCM ,二分答案

🔥博客介绍: 27dCnc [Cstring中find_first_not_of()函数和find_last_not_of()函数-CSDN博客] 方差,期望 概率 今日打卡: 算法周总结 ACM题解Day3| To Crash or not To Crash,Integer Prefix ,I don’t want to pay for the Late Jar-CSDN博客 第3题:…

【LeetCode:2917. 找出数组中的 K-or 值 + 模拟+位运算】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

如何将 ONLYOFFICE 协作空间部署到 Kubernetes / OpenShift 集群中

需要 ONLYOFFICE 协作空间的可扩展实例吗?使用 Helm 轻松将其安装到 Kubernetes 或 OpenShift 集群中。阅读本文了解详情。 ONLYOFFICE 协作空间是什么 ONLYOFFICE 协作空间是一个协同办公平台,能够帮助用户更好地与客户、业务合作伙伴、承包商及第三方…

驱动调试第013期-G120XA驱动同步电机应用案例

概述 SINAMICS G120XA是西门子SINAMICS系列变频器的新成员, 功率范围覆盖0.75 kW~560 kW,内置风机和水泵行业应用功能,汇集了优异的高性能矢量控制算法,可以轻松的驱动风机、水泵及压缩机等负载。胜任各种应用场合,专…

【python基础学习11课_异常机制】

一、异常 1、异常的定义 异常:程序无法继续执行异常会中断程序执行异常处理,是为了不中断程序执行。而不是避免错误。有些代码是报错就是要暴露出来有了异常机制,错误的代码报错后抛出异常,代码从上到下,报错代码后面…

触发HTTP preflight预检及跨域的处理方法

最近在做需求的过程中,遇到了很多跨域和HTTP预检的问题。下面对我所遇到过的HTTP preflight和跨域的相关问题进行总结: 哪些情况会触发HTTP preflight preflight属于cors规范的一部分,在有跨域的时候,在一定情况下会触发preflig…

字节开启新一轮期权回购,价格又涨了(含算法原题)

字节期权 近日,字节跳动开启新一轮期权回购,价格微涨至 170 美元。 之前我们就写过 文章,分享历年来字节跳动的期权变化情况,这里再贴一下: 18年:10 19年:30 20年:60-70 21年&#x…

Linux系统编程(六)高级IO

目录 1. 阻塞和非阻塞 IO 2. IO 多路转接(select、poll、epoll) 3. 存储映射 IO(mmap) 4. 文件锁(fcntl、lockf、flock) 5. 管道实例 - 池类算法 1. 阻塞和非阻塞 IO 阻塞 IO:会等待操作的…

决定马里兰州地区版图的关键历史事件

1. 马里兰殖民地的建立: - 1632年,英国国王查理一世将一大片土地赐予塞西尔卡尔弗特男爵,这片土地是为了纪念国王的妻子亨丽埃塔玛丽亚而命名为“马里兰”。卡尔弗特和他的儿子随后建立了马里兰殖民地,这标志着马里兰作为一个独立…