前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ATX2 iOS设备管理平台搭建

ATX2 iOS设备管理平台搭建

作者头像
清风穆云
发布2021-08-09 10:59:08
2K1
发布2021-08-09 10:59:08
举报
文章被收录于专栏:QA一隅

前面分享了STF Andriod设备远程管理平台的搭建和使用 Mac OS环境搭建STF ,但是STF不支持iOS设备连接,虽然现在社区有了STF集成iOS设备的开源方案,但是经过实践不太稳定,后面在Testerhome社区发现了一个新的框架ATX2同时支持AndroidiOS设备远程管理,过实践设备连接非常稳定,所以这里分享下这个平台的搭建和使用。

ATX2是一款可以远程控制AndroidiOS设备的设备管理平台。该平台使用的技术栈为:Python3+NodeJS+RethinkDB 项目目前已经开源,作者是阿里的一位大牛:codeskyblue

  • 项目:Github地址:https://github.com/openatx/atxserver2
  • 平台框架图如下所示:

环境准备

系统环境:Mac Os 10.14(因为要使用iOS设备连接WDA,所以需要Mac Os环境)

python3安装

代码语言:javascript
复制
brew install python3

rethinkdb安装

代码语言:javascript
复制
brew install  rethinkdb

服务部署

启动ATX2服务有2种方式:

  • Docker部署
  • 源码部署

Docker部署

  1. 使用Docker部署需要安装Docker,具体安装步骤见:Docker安装
  2. 下载项目文件:https://github.com/openatx/atxserver2
  3. 打开命令终端进入该项目目录
  4. 执行如下命令即可启动服务
代码语言:javascript
复制
docker-compose up

源码部署

1.启动rethinkdb服务器

代码语言:javascript
复制
atxdeMac-mini:~ atx$ rethinkdb
Running rethinkdb 2.3.6 (CLANG 10.0.0 (clang-1000.10.43.1))...
Running on Darwin 18.2.0 x86_64
Loading data from directory /Users/atx/rethinkdb_data
Listening for intracluster connections on port 29015
Listening for client driver connections on port 28015
Listening for administrative HTTP connections on port 8080
Listening on cluster addresses: 127.0.0.1, ::1
Listening on driver addresses: 127.0.0.1, ::1
Listening on http addresses: 127.0.0.1, ::1
To fully expose RethinkDB on the network, bind to all addresses by running rethinkdb with the `--bind all` command line option.
Server ready, "atxdeMac_mini_local_c34" ea7cf4a5-88fc-49f7-94b6-9c6b55323b04

2.下载ATX2项目文件到本地: https://github.com/openatx/atxserver2

3.打开命令终端切换到该目录下,然后执行命令pip3 install -r requirements.txt安装依赖。

4.启动服务,命令如下:

代码语言:javascript
复制
#默认方式启动,使用默认的登录方式,默认端口
python3 main.py

# 指定认证方式
python3 main.py --auth simple  #默认是一个非常simple的认证,输入邮箱就可以

# 设置监听端口
python3 main.py --port 4000 # 默认监听4000端口

打开页面

启动之后,浏览器打开http://localhost(本机ip也可以):4000,登录之后就可以顺利的看到设备列表页了,由于还没有接入设备所以设备列表为空。

设备接入

ATX2可以支持连接AndroidiOS设备,关于Android设备连接这里不细讲,可以参考:https://github.com/openatx/atxserver2-android-provider, 这里我们重点讲解iOS设备的连接。

libimobiledevice

libimobiledevice用于连接iOS设备,类似于Androidadb。使用如下命令进行安装:

代码语言:javascript
复制
brew install libimobiledevice

WebDriverAgent

WDA简介

WDA(WebDriverAgent)是适用于iOSWebDriver服务器实现,可用于远程控制iOS设备允许启动和终止应用程序,点击和滚动视图或确认屏幕上的视图存在。

这使其成为应用端到端测试或通用设备自动化的完美工具。它的工作原理是链接XCTest.framework和调用AppleAPI直接在设备上执行命令。WebDriverAgentFacebook上开发并用于端到端测试,并被Appium成功采用(做过Appium iOS自动化的同学相信对这个工具比较熟悉吧)。

这里需要下载ATX2fork版本:https://github.com/openatx/WebDriverAgent

初始化WDA

进入到WDA目录,使用如下命令初始化WDA,该脚本会使用Carthage下载所有的依赖,使用npm打包响应的js文件

代码语言:javascript
复制
brew install carthage
./Scripts/bootstrap.sh

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

设置证书

因为安装到真机上都是需要证书签名的,所以需要准备苹果开发者证书,可以使用公司的企业证书或者个人开发者证书(99美刀一年)

1.首先在TARGETS里面选中WebDriverAgentLib设置好证书

2.接着在TARGETS里面选中WebDriverAgentRunner,用同样的方法设置好证书。

3.如果是免费版的个人证书,还需要修改下WebDriverAgentBundleID,随便加点后缀,只要不跟其他人的重名就好。

运行测试

1.菜单栏选择目标设备

2.Scheme选择WebDriverAgentRunner

3.最后运行 Product -> Test一切正常的话,手机上会出现一个无图标的WebDriverAgent应用

注意:UI Testing需要iOS9.0以上系统版本,所以连接WDA的设备最好是iOS9以上系统版本。

4.此时Xcode控制台界面可以看到设备的IP。如果看不到的话,依次点击Xcode菜单 View->Debug Area->Activity Console

端口转发

1.有些国产的iPhone机器通过手机的IP和端口还不能访问,此时需要将手机的端口转发到Mac上。

代码语言:javascript
复制
 iproxy 8100 8100

2.打开浏览器输入http://localhost:8100 可以看到页面如下信息,说明WDA连接成功。

代码语言:javascript
复制
{
  "value" : "Unhandled endpoint: \/ -- http:\/\/localhost:8100\/ with parameters {\n    wildcards =     (\n        \"\"\n    );\n}",
  "sessionId" : "D33BB641-B7ED-42AE-A4A2xxxxxx",
  "status" : 1
}

命令连接WDA

Xcode虽然可以使设备连接WDA,但是每次只能连接一台设备,而且该软件运行占用内存比较大,所以我们需要使用命令终端来运行WDA,这样方便我们进行自动化或持续集成。

注意:每台设备使用命令连接WDA时需要在xcode上面注册。

1.首先我们获取iOS设备的udid

代码语言:javascript
复制
atxdeMac-mini:~ atx$ idevice_id -l
6dd5e55bf4204cd5ad8042dc4ecb2b703bbxxxxx

2.然后执行如下命令来运行WDA

代码语言:javascript
复制
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=1d2c746769435ce0749f7f87b56f80abxxxxxx" test

3.最后还是运行端口转发命令iproxy 8100 8100

WDA运行常见问题

1.安装失败

解决方法:遇到这个问题,说明手机上已经有一个WebDriverAgent的应用了,只是BundleID不一致,需要先将手机上的卸载掉,重新运行 Product -> Test

2.设备未信任

解决方案:进入 设置->通用->设备管理->开发者应,然后点击信任,之后再重新运行一遍 Product -> Test

ios-provider

下载安装atxserver2-ios-provider,进入到该目录,执行如下命令即可连接iOS设备。

代码语言:javascript
复制
#安装相关依赖
pip3 install -r requirements.txt


# 避免命令行运行出错,运行一次即可
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer


# 解锁keychain,防止签名权限不足问题
security unlock-keychain ~/Library/Keychains/login.keychain


SERVER_URL="http://localhost:4000" # 这里修改成atxserver2的地址
python3 main.py -s $SERVER_URL

连接成功后,如下图所示可以看到连接的iOS设备,点击立即使用即可远程控制。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QA一隅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境准备
  • 服务部署
    • Docker部署
      • 源码部署
        • 打开页面
        • 设备接入
          • libimobiledevice
            • WebDriverAgent
              • WDA简介
              • 初始化WDA
              • 设置证书
              • 运行测试
              • 端口转发
              • 命令连接WDA
              • WDA运行常见问题
            • ios-provider
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档