• airtestIDE连接iOS真机


    上期回顾:airtestIDE连接模拟器及常见问题


    以下基于
    python3.8;airtestIDE1.2.9;airtest1.1.10;pocoui1.0.82
    xcode12.4;iOS14.4

    前言

    先说一句,想做好iOS的自动化,必备一台MAC。虽然现在阿里开源的tidevice后期可以脱离MAC,但一些前期的步骤还是需要MAC,你不可能随时随地借开发的MAC本调试吧。

    WebDriverAgent是由Facebook开发的一套开源框架,用于端对端的UI测试,能同时支持模拟器和真机。

    airtestIDE的iOS-Tagent是基于 facebook 的 WebDriverAgent进行开发的,提供iOS平台的测试支持,在原项目的基础上进行了定制化的优化和功能调整。

    airtest截止2021.4.1支持到最新的iOS、Xcode。如果将来你看到本篇文章,也许那时候版本会出现不匹配的问题,也没关系,等airtest官方更新即可。

    Airtest连接iOS真机测试

    (一)iOS-Tagent

    使用iOS-Tagent在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素。

    1.下载 iOS-Tagent 到本地电脑

    git clone git@github.com:AirtestProject/iOS-Tagent.git

    2.使用Xcode打开 iOS-Tagent, 用数据线连接iPhone至Mac

    连接iPhone后,在iPhone设备上弹出的“是否信任Mac设备”,选择信任

    选择项目,在菜单栏 product -> Scheme -> WebDriverAgentRunner

    图片

    选择设备,在菜单栏 product -> Destination -> 选择你的真机

    图片

    3.使用苹果账号或苹果开发者账号,登录Xcode,并注册真机设备

    (1) 左侧导航栏,选择 WebDriverAgentRunner -> TARGETS -> WebDriverAgentRunner -> Signing & Capabilities -> Team

    图片

    (2) 选择 Team -> Add an Account -> 登录苹果账号(个人免费或开发者账号)

    (3) 选择 TARGETS -> WebDriverAgentRunner -> Build Settings -> Basic

    图片

    (4) 双击 Product Bundle Identifier值,填写一个属于自己独一无二的字串

    (5) 回到上文提过的Signing & Capabilities界面,查看有无报错

    图片

    无报错,则继续;若有报错,查看常见问题:
    https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/question_zh.md

    4.启动Test,在菜单栏 product -> Test。xcode会编译WebDriverAgent并安装到手机上。当你看到这样的日志的时候,代表 iOS-Tagent 已经启动成功了

        Test Suite 'All tests' started at 2017-01-23 15:49:12.585
        Test Suite 'WebDriverAgentRunner.xctest' started at 2017-01-23 15:49:12.586
        Test Suite 'UITestingUITests' started at 2017-01-23 15:49:12.587
        Test Case '-[UITestingUITests testRunner]' started.
        t =     0.00s     Start Test at 2017-01-23 15:49:12.588
        t =     0.00s     Set Up
     

    过程中,Xcode可能会请求密码权限或其他权限 —> 全部允许 —> 不要拒绝,拒绝可能会带来奇妙的异常。

    以防万一,再手动去苹果手机的设置—>通用—>描述文件与设备管理—>找到WebDriverAgentRunner,如果没有信任,点击信任

    (二)设置代理

    1.iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口。安装命令:

    brew install libimobiledevice --HEAD

    2.运行iproxy

    $ iproxy 8100 8100

     

    图片

    上面这条命令的意思就是将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。
    从图中可以看到,当有访问端口时,会有相应日志打印出来。

    启动成功后,可以试着在浏览器访问 http://127.0.0.1:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。此时,访问 http://127.0.0.1:8100/inspector 可以看到iPhone屏幕投影在浏览器上。

     

    (三)airtestIDE连接iphone

    在AirtestIDE的iOS地址栏填入地址 http://127.0.0.1:8100 ,点击 “connect” 连接设备,可以看到airtestIDE连上iphone并能看见&操作其屏幕了。

    在airtestIDE左下的‘poco辅助窗’选择‘iOS’,可以看到iphone上的元素控件,可以使用poco框架编写自动化。

    如果要使用iOS的Unity Poco的话,还要另外映射一个端口:

    $ iproxy 5001 5001

    之前的8100端口用于连接iOS手机,这里的5001端口用于连接poco-sdk的rpc端口。

    开完2个端口映射,并在airtestIDE里连上iphone后,进入游戏(需要事先接入Poco SDK),在‘poco辅助窗’选择‘Unity’,就可以看到游戏的元素控件了。

    (四)使用Appium的WebDriverAgent连接真机

    上面介绍了用airtest的iOS-Tagent连接真机,但因为airtest官方更新较慢,如果遇到版本不匹配的问题,现在也支持使用Appium的WebDriverAgent连接真机。Appium的WebDriverAgent也是基于facebook的WebDriverAgent开发的,其更新速度很快。

    Appium的WebDriverAgent搭建过程与iOS-Tagent非常相似,只不过Xcode中要设置两个TARGETS:WebDriverAgentLib、WebDriverAgentRunner

    1.下载源码

    git clone https://github.com/appium/WebDriverAgent

    2.使用Xcode打开工程
    同iOS-Tagent第3步的设置,分别给WebDriverAgentLib、WebDriverAgentRunner设置TeamProduct Bundle Identifier
    注意如果2个TARGETS的Team上边的选项Automatically manage signing如果没有勾选,则选中

    3.设置代理并连接
    在Xcode里product -> Test成功后,在命令行输入iproxy 8100 8100,就可以去airtestIDE里连接了。

    ---------------------------------------------------------------------------------

    关注微信公众号即可在手机上查阅,并可接收更多测试分享~

  • 相关阅读:
    2015/5/10站立会议(补发)
    2015/5/11站立会议(补发)
    2015/5/12站立会议(补发)
    5/13站立会议(补发)
    面向对象——抽象类和接口
    面向对象(三)——静态
    面向对象——三大特性(封装、继承、多态)
    ADO.NET
    面向对象 封装练习题
    面向对象 封装
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/14773350.html
Copyright © 2020-2023  润新知