iOS 测试 iOS-remote 安装篇之 iOS-remote 安装使用完全指南

yxys01 · 发布于 2017年10月16日 · 最后由 chenhengjie123 回复于 2017年12月14日 · 1408 次阅读
本帖已被设为精华帖!

iOS-remote使用指南

简介

iOS-remote是结合WebDriverAgentios-minicap 开源项目做出来的基于JAVA的iOS远程真机控制的项目。

平台

仅限Mac使用

特点

  • [√] 启动项目时运行 iproxy
  • [√] 为WDA服务创建http代理
  • [√] 添加缺失的索引页
  • [√] 支持包管理API
  • [√] 支持WDA运行
  • [√] iOS远程真机控制
  • [√] 基于Java开发

功能

  • [√] iOS远程真机控制(点击拖拽)
  • [√] HOME键功能
  • [√] iPhone输入框添加文字(中英文--中文还在修复中)
  • [√] 设备信息显示
  • [√] 从本地安装ipa文件到iPhone真机里
  • [√] 卸载已安装APP
  • [√] 截图功能

安装要求

  • 用brew安装libjpeg-turbo (要求版本1.5及以上)
  • Xcode (要求版本8及以上,注:9有一定无法使用的风险)
  • cmake(最好通过brew安装)
  • OS X Yosemite (要求版本10.9及以上)
  • iOS(要求版本8及以上)
  • Lightning cable. 查看设备列表.
  • Carthage 获取所有依赖项
  • npm建立Inspector bundle
  • Eclipse IDE for Java EE Developers
  • JavaSE (要求版本1.6及以上)
  • Tomcat (要求版本7及以上)
  • libimobiledevice
  • ideviceinstaller
  • usbmuxd

其他帮助文档

How to install ios-minicap

How to install WebDriverAgent

WebDriverAgent Q&A

Eclipse Import Maven Project

Configure Tomcat9 In Mac

安装

1、安装Xcode

Xcode这个可以去官网安装或者去我的网盘下载Xcode8.3.3.xip

链接:http://pan.baidu.com/s/1hszRESW 密码:yogw

下载好Xcode,还要下载Command Line Tools

  1. 打开mac终端
  2. 在终端中输入以下命令:xcode-select --install ,按回车。

然后一路点确定安装即可

详情可见:http://blog.csdn.net/yxys01/article/details/73456973

2、安装Homebrew

Homebrew的安装很简单,只需在终端下输入如下指令:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew安装成功后,会自动创建目录 /usr/local/Cellar 来存放Homebrew安装的程序。 这时你在命令行状态下面就可以使用 brew 命令了.

详情可见:http://blog.csdn.net/yxys01/article/details/77452318

3、安装node和npm

直接打开终端输入如下指令:

$ brew install node

执行完上面的命令,你就安装好了nodejs和npm

4、安装前准备工作

(1)需要安装 usbmuxd 以便于通过 USB 通道测试 iOS 真机,不需要测试真机则不用安装

$ brew install usbmuxd

(2)请安装 carthage 来构建 WebDriverAgent.

$ brew install carthage

(3)安装libimobiledevice 和 ideviceinstaller

$ sudo brew update
$ sudo brew install libimobiledevice
$ sudo brew install ideviceinstaller

5、安装ios-minicap

(1)打开终端,clone该项目:

$ git clone https://github.com/openstf/ios-minicap 

(2)安装libjpeg-turbo

$ brew install libjpeg-turbo 

(3)安装cmake

$ brew install cmake

(4)启动ios-minicap

详情可见:http://blog.csdn.net/yxys01/article/details/76442135 或者 https://testerhome.com/topics/10456

6、安装 WebDriverAgent

安装步骤详情可见:https://testerhome.com/topics/10463

(1)打开终端,clone该项目:

$ git clone https://github.com/facebook/WebDriverAgent

(2)运行初始化脚本

$ cd /Users/yourname/WebDriverAgent

$ mkdir -p Resources/WebDriverAgent.bundle

$ sh ./Scripts/bootstrap.sh

该脚本会使用Carthage下载所有的依赖,使用npm打包响应的js文件

执行完成后,直接双击打开WebDriverAgent.xcodeproj这个文件。

(3)安装中遇到一些问题,解决方案可见:

http://blog.csdn.net/yxys01/article/details/77045359

7、安装iOS-remote

(1)打开终端,clone该项目:

$ git clone https://github.com/weamylady2/iOS_remote

or

$ git clone https://github.com/yxys01/iOS_remote

(2)在 Eclipse中打开 iOS_remote

打开Eclipse

Import->Maven->Existing Maven Projects->Next->Browse(iOS_remote's path)->Finish

更改 iOS_remote中的一些设置

Java Resources->src/main/resource->config.properties

在config.properties中改三个参数:minicapPath、wdaPath、bashPath

minicapPath=/Users/yourname/ios-minicap-master
wdaPath=/Users/yourname/WebDriverAgent
bashPath=/Users/yourname/ios_remote/src/main/resources
wdaPort=8200
minicapPort=12345

(3)重新构建 ios-minicap

为了减少MAC的压力,我们需要减少从minicaps中发送imgs的频率。

在ios-minicap的文件夹中,编辑 src/minicap.cpp

添加一个方法:

static void sleep_ms(unsigned int secs)
{
struct timeval tval;
tval.tv_sec=secs/1000;
tval.tv_usec=(secs*1000)%1000000;
select(0,NULL,NULL,NULL,&tval);
}

然后在main中添加sleep_ms(50);

while (gWaiter.isRunning() and gWaiter.waitForFrame() > 0) {
client.lockFrame(&frame);
encoder.encode(&frame);
client.releaseFrame(&frame);
putUInt32LE(frameSize, encoder.getEncodedSize());
if ( pumps(socket, frameSize, 4) < 0 ) {
break;
}
if ( pumps(socket, encoder.getEncodedData(), encoder.getEncodedSize()) < 0 ) {
break;
}
sleep_ms(50);
}

重新构建 ios-minicap, 运行build.sh在ios-minicap文件夹中:

$ ./build.sh 
mkdir: build: File exists
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/waterhuang/Downloads/ios-minicap-master/build
[100%] Built target ios_minicap

8、运行iOS_remote

(1)新建一个终端,打开iproxy

$ iproxy 8200 8100

(2)再打开一个终端

$ cd /Users/yourname/iOS_remote
$ mvn tomcat7:run-war

(3)打开浏览器,输入网址:http://localhost:8080/ios/ 即可

iOS-remote 安装篇

iOS-remote 安装篇之 ios-minicap 安装使用完全指南

iOS-remote 安装篇之 WebDriverAgent 安装使用完全指南

iOS-remote 安装篇之 iOS-remote安装使用完全指南

参考文献

iOS-minicap + WDA 实现 ios 远程真机测试 https://testerhome.com/topics/10262
基于 WebDriverAgent 的 iOS 远程控制 https://testerhome.com/topics/8890
iOS 远程真机 (仅限屏幕查看) https://testerhome.com/topics/6470
WebDriverAgent简介 https://testerhome.com/topics/4904
iOS 真机如何安装 WebDriverAgent https://testerhome.com/topics/7220
WebDriverAgent天坑记 https://testerhome.com/topics/9666
STF 框架之 minicap 工具 https://testerhome.com/topics/3115

致谢

@codeskyblue
@weamylady

欢迎使用以及提出宝贵意见

@seveniruby
@Lihuazhang
@xdf
@chenhengjie123

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 19 条回复
25f875 yxys01 iOS 远程真机实现讨论帖!! 中提及了此贴 10月16日 18:44
104 seveniruby 将本帖设为了精华贴 10月16日 23:39
2457

看起来不错。试试用 https://github.com/macacajs/XCTestWD

25f875
yxys01 · #6 · 2017年10月17日 作者
2457xdf 回复

其实有试用XCTestWD,可见该帖:https://testerhome.com/topics/10334

1134

目前已加入了: App安装、App卸载、设备信息显示、截图等功能。
我们急需一个前端来帮忙美化页面TAT...
GitHub: https://github.com/weamylady2/iOS_remote

69ae3c

$ iproxy 8200 8100 这个也可以在java端做
如果一台mac连接多台手机 有两处地方需要修改
目前我在做的时候还遇到一个问题就是 就算停掉了启动wda的那个进程 127.0.0.1:8100/status 仍然能返回结果造成的影响就是再次启动wda报错 尝试在新建wda的时候获取到进程id 然后再次启动之前杀掉这个进程 结果仍然是无效 不知道哪位大神遇到过

1134
69ae3cpliue 回复

kill -9 $(ps -ef|grep xcodebuild |awk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
我用这个kill掉WDA之后可以重新启动,没有问题哦!
ios-minicap貌似不支持多台手机连接,所以无法一台mac接多台电脑,

69ae3c
1134weamylady 回复

有个问题 object-c怎么读取xcode的user-defined选项中的某个值呀

1134
69ae3cpliue 回复

不懂,你要问问这个大神:@codeskyblue

69ae3c
1134weamylady 回复

@codeskyblue 求不吝赐教

6853
69ae3cpliue 回复

我oc只停留在看懂的阶段

69ae3c
6853codeskyblue 回复

翻阅苹果文档中。。。

605

不错呀,这两天抽空搭建一下试试。

另外,如果正文能加上演示的 gif 动图会更直观哦。

940906

@yxys01 楼主大大,用mvn tomcat7:run-war 这个启动项目很慢很慢,一直在下载maven依赖插件咋的,而且还下载失败了build failure了;
所以我换成自己下载一个tomcat7,然后将ios.war(配置修改后打成war)放到webapps,启动tomcat,端口改为28080
但是,页面打开有点问题

ios-minicap已经能正常截图展示了!WebDriverAgentRunner已经装上手机了!

1134
940906HeartBeat 回复

请同步最新github上面的代码哦!https://github.com/weamylady2/iOS_remote

940906
1134weamylady 回复

最新代码也是一样,手机页面展示不出来,已经等待几分钟了

我是打成ios.war,然后打开地址是http://localhost:28080/ios/ios/ios.html
0:0:0:0:0:0:0:1 - - [26/Oct/2017:13:58:37 +0800] "GET /websocket HTTP/1.1" 404 -
0:0:0:0:0:0:0:1 - - [26/Oct/2017:13:58:37 +0800] "GET /fonts/glyphicons-halflings-regular.woff HTTP/1.1" 404

25f875
yxys01 · #19 · 2017年10月26日 作者
940906HeartBeat 回复

wda没启动起来吧。。。现在index入口是remote.html,过段时间会重构代码,弄完web页面后我会重新写一下指南

1134
940906HeartBeat 回复

你重新git Clone一下吧,有些代码没有更新下来。

940906
25f875yxys01 回复

wda我再看下哪里不对;期待你的优化😀

940906
1134weamylady 回复

git clone好久才下下来,我再试一下吧,谢谢

23楼 已删除
605

iPhoneX 只有一台,需要共用,终于抽出时间搭建起来了。

非常感谢楼主的辛勤劳动和开源精神,iOS 远程控制一直都是一个空白的区域,虽然有不少商业方案,技术工具也比较丰富,但做到一站式且开源的仅此一家。

文档写得很细,过程中基本上按照文档走就行了。不过还是有些小坑,在此分享下解决方法:

  1. 如果按文中要求使用 WDA 仓库内容,有很大可能会由于没有配置好开发者账户导致 wda 启动失败。建议增加这方面的说明,或者让大家都去使用 appium 自带的 WDA
  2. 修改端口号略为不便,在代码中、pom 文件中均需要同步调整对端口的定义。建议把配置统一至一处。
  3. 点击事件坐标获取存在 bug ,永远获取到的都是 0,0 。已提交 pr :https://github.com/weamylady2/iOS_remote/pull/16
  4. clone 耗时较长,原因是 git 提交历史有 37M 大,建议通过 rebase 消除掉以往一些不需要的提交历史,缩短 clone 时间。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册