IOS 模拟器多开集成测试和那些坑
#### 前言
公司一直没有IOS自动化,搞得很尴尬,个人感觉搞自动测试的,不搞IOS自动化,就像金X,少了重要一点啊。也向领导申请过不止一次,总只都各种原因没有分配机器,不了了之。某天线上IOS出bug了,领导遂一咬牙一跺脚决定,搞IOS自动化,期限一个月!领导的决定总是那么简约而又简单,对我们这些没有摸过MAC的弱鸡来说,IOS自动化0到1,压力山大啊。好在不到一个月,终于搞定了。和向我一样的的弱鸡们分享一下IOS模拟器多开集成测试从0到1中间的各个坑,大神自行绕道吧。
#### 准备
##### Mac一台:黑苹果我没有玩过,如果你是黑苹果,就先期待你们线上出Bug,借机申请MAc吧。
1. MAC OS版本:10.13.6
2. Xcode版本:9.4.1(低版本的不不支持多开)
3. IOS 11.3 Simulator
##### Appium测试环境安装:社区里很多帖子自行搜索一下。这里说一下遇到的坑。**[这个帖子可以参照](https://testerhome.com/topics/5233)**
1. WDA编译时,监听一直显示http://10.100.4.232:0,调查半天,发现电脑的host被修改过。localhost被屏蔽删除掉了。解决办法:加个localhost
2. 依赖软件安装不了,软链接加不上。解决办法:看日志相关路径赋权,chmod -R 777 你的路径
3. 桌面版appium搞好后,安装命令版appium,运行不起来。安装模拟器里的WDA莫名删除。解决办法:/WebDriverAgent/到各自的目录下去编译一下
##### 在命令行输入 appium 能正常启动,跑你的测试demo可以正常运行。如果不能。集成多开也别想搞了。重新检查第二步 **Appium测试环境安装**
##### Java执行命令,启动appium服务(Python语言自动化的朋友,以下简称py,转换一下语言吧)。
1. 这里说一下一个巨坑,Mac 下java执行命令时,默认用的是系统的/bin/下的指令,所以你在Mac电脑的shell终端下,直接输入appium 可以起动服务,用java的Runtime.getRuntime().exec(commands); 就不行了,总是不是内部命令,或者找不到目录。
2.解决办法:执行的命令写完整路径例:/usr/local/Cellar/node/10.5.0_1/bin/node /usr/local/lib/node_modules/appium/build/lib/main.js
##### 命令启动时,自动编译WDA(多开要自动编译)编译报错如下:
```
[XCUITest] Launching WebDriverAgent on the device
[XCUITest] Error: Carthage binary is not found. Install using `brew install carthage` if it is not installed and make sure the root folder, where carthage binary is installed, is present in PATH environment variable. The current PATH value: '/usr/bin:/bin:/usr/sbin:/sbin'
[XCUITest] at Object.wrappedLogger.errorAndThrow (/usr/local/lib/node_modules/appium/node_modules/appium-support/lib/logging.js:78:13)
[XCUITest] at checkForDependencies$ (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/lib/wda/utils.js:70:9)
[XCUITest] at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[XCUITest] at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
[XCUITest] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
[XCUITest] at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
```
1.原因,java运行命令时,编译WDA的 **carthage** 在 '/usr/bin:/bin:/usr/sbin:/sbin'路径下找不到(carthage的软连接,我们通常是在/usr/local/bin/下的)。
2.解决办法:在/usr/bin里创建carthage的软连接。由于Mac系统关键目录开启了保护,通常是直接创建是创建不成功的。
3.重启电脑
4.command + R 进入recover模式(重启过程中一直按着不放)
5.点击最上方菜单使用工具,选择终端
6.运行命令csrutil disable
7.当出现一长串输出信息中有successfully字样,代表关闭成功!
8.重启电脑,打开终端。cd /usr/bin,在/usr/bin里创建carthage的软连接,根据我的安装目录软连接命令是:sudo ln -s /usr/local/Cellar/carthage/0.30.1/bin/carthage carthage
##### 打开Simulator,记录你想打开的模拟器udid,以备多开用。
目前我一台电脑开四个模拟器,开多了怕垃圾机器受不了
##### capabilitie设置以下几点
capabilities.setCapability("useNewWDA", true);//iOS并发必须要重新装WDA
capabilities.setCapability("wdaLocalPort", getWDAFreePort());//WDA端口
capabilities.setCapability(IOSMobileCapabilityType.BUNDLE_ID, “根据任务运行时取得空闲的模拟器UDID”);
##### 任务管理画面点击任务执行

机器就开始执行了

不会录屏,并行执行的界面贴不上了。
#### 总结
Mac和windows许多地方差别还是挺大的。号称一处编译处处使用的java也只是说说而已。
第一次接触使用Mac各种不熟,弱鸡无力啊。对大神们来说搞这些如探囊取物,对于我这样的弱鸡来说举步维艰,也学会了 rm -rf /*等命令。
好在一个月内搞出来了,虽然领导还是嫌弃进度慢。
要优化的地方还很多,很多坑也许才刚刚开始,期待大神们指点一下,谢谢。
IOS 模拟器多开集成测试和那些坑的更多相关文章
- Appium+python自动化16-appium1.6在mac上环境搭建启动ios模拟器上Safari浏览器
前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器.后来全部升级最新版本,就稳稳的了. 环境准备: 1.OS版本号10.12 2.xcode版本号8.3.2 3.appiu ...
- appium1.6在mac上环境搭建启动ios模拟器上Safari浏览器 转自:上海-悠悠
前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器.后来全部升级最新版本,就稳稳的了. 环境准备: 1.OS版本号10.12 2.xcode版本号8.3.2 3.appiu ...
- 全球首款iOS模拟器出炉!在违法的边缘疯狂试探
对于许多智能手机用户,特别是手游玩家来说,在手机屏幕的方寸之间进行操作显然并非特别方便,而且在多年之前,由于手机配置不足,也导致了用PC来玩手游的需求不断涌现.彼时,BlueStacks及夜神等一众A ...
- Xamarin的不归路-ios模拟器调整窗口大小
ios模拟器调整窗口大小:
- Xamarin的不归路-ios模拟器没有键盘
ios模拟器没有键盘解决方案: 勾选上就有了. 2016年9月1日
- Xcode无法启动ios模拟器的问题
一.问题描述 开发过程需要来回切换ios模拟器调试程序,开始在iPhone 4s下调试,然后切换到iPhone 6s Plus,再切换回iPhone 4s,遇到无法启动ios模拟器.错误提示如下: 二 ...
- storyboard在ios模拟器无法显示的问题
一.问题描述 1.在原有项目新建一个名称为test的storyboard类型的文件. 2.test.storyboard添加View Controller,并设置View Controller下Vie ...
- Xcode5 运行程序 提示IOS 模拟器未能安装此应用程序
更新了Xcode5,结果模拟器各种不配合,首先遇到的问题就是提示“IOS 模拟器未能安装此应用程序” 上网查了一下,网友给出的解决办法“删除~/Library/Application Support/ ...
- Xamarin.iOS模拟器调试找不到资源文件
Xamarin.iOS模拟器调试找不到资源文件 在Visual Studio 2015中,运行Xamarin.iOS项目,出现找不到资源文件的错误.错误信息:System.IO.FileNotFoun ...
随机推荐
- mysql-----04 多表查询
本节主要介绍mysql的多表查询(多表连接查询.复合条件查询.子查询) 一.多表连接查询 #重点:外链接语法 select 字段列表 from 表1 inner|left|right join 表2 ...
- Opencv-Python学习笔记(一)
学习和研究计算机视觉,必然绕不开OpenCV. 于是我下载了它的C++源码,用cmake编译遇到一些错误. 然后结合网上一些帖子看源码看了好几天,发现有点不知从何处入手. 于是准备从其python版本 ...
- 20175126《Java程序设计》第九周学习总结
# 20175126 2016-2017-2 <Java程序设计>第九周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第十一章,本章 ...
- 转:TCP/IP协议(一)网络基础知识
转载:http://www.cnblogs.com/imyalost/p/6086808.html 参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知 ...
- ubuntu 下安装pip3
在使用任何apt 安装任何软件包之前,建议用以下命令更新软件 sudo apt update 更新好了后可能会出现 apt list --upgradable 安装pip3 sudo apt inst ...
- applium安装过程中遇到的问题及解决方法。
1.安装appium server 之后, cmd输入appium-doctor,运行时提示'node'不是内部或外部的命令 一.提示'node'不是内部或外部命令,先按照下面步骤操作: 1.设置 ...
- 3,postman的变量写法和collection
1,环境变量和全局变量的添加和引用 pm.globals.get("variable_key");可以引用环境变量 2,collection的使用 当在tests中使用文件变量的时 ...
- Workbench利用Python驱动DM执行Js进行建模
Workbench的工作平台下可以利用Python进行一些操作,包括添加system和component等等.DM可以通过执行Jscript脚本进行自动建模,因此,结合这两块的内容,可以利用Pytho ...
- dubbo服务达成jar包
<build> <finalName>dubbo-provider</finalName> <!-- jar包名,一般设置为提供者服务名 --> < ...
- BFC和清除浮动
1.清浮动(不考虑兼容的话这一项够用了): .clear:after{ content:''; display:block; clear:both; } 兼容ie6或7 加一个 .clear{ *zo ...