zoukankan      html  css  js  c++  java
  • 6 | 如何在iOS手机上进行自动化测试

    转载:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/

    6 | 如何在iOS手机上进行自动化测试

    6.1 iOS自动化测试


    Airtest支持iOS自动化测试,在Mac上为iOS手机部署iOS-Tagent之后,就可以使用AirtestIDE连接设备,像连接安卓设备一样,实时投影、控制手机。iOS测试不仅限于真机测试,iOS模拟器也可以进行。Mac端上部署完成后,还可以提供给同一局域网内的Windows远程连接使用。同时支持Airtest图像识别和Poco UI检索。

    本文介绍iOS自动化测试的部署过程,提供一个简单的测试脚本,列举了iOS测试过程中常见的问题。

    6.1.1 功能支持

    • 支持AirtestIDE连接,实时控制iPhone
    • 支持基本操作,如:启动App、点击、滑动、输入、截图等操作
    • 支持控件检索技术Poco和图像识别
    • 支持自动化脚本录制、一键回放、报告查看等基本功能
    • 支持真机或者模拟器



    6.2 安装部署


    版本需求:

    • Mac Xcode ≥ 9.3
    • iPhone iOS ≥ 9.3
    • 在 9.3≤iOS≤10时,由于基于旧版Xcode SDK,建议使用Xcode 版本≤10.1来启动iOS-Tagent,否则会出现手机截屏不全的问题。

    6.2.1 部署流程

    iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口。Mac下可以通过brew安装brew install usbmuxd。

    iproxy 8100 8100意思就是将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问手机了。

    • 在Airtest IDE的设备窗口,输入地址:http://127.0.0.1:8100或 http://x.x.x.x(MAC IP):8100:

    点击Connect按钮即可连接iOS设备,如图:

    6.2.2 支持Xcode中的iOS模拟器

    Xcode中iOS Simulator模拟器的部署过程和真机一样,但是可以省略步骤2,不需要另外执行proxy。

    当Xcode的Log窗口看到下面内容的时候,就可以直接用地址http://x.x.x.x:8100进行连接了,也就是Log里显示出来的ServerURLHere中的地址:

        WebDriverAgentRunner-Runner[xxx:xxx] ServerURLHere->http://x.x.x.x:8100<-ServerURLHere
    

    6.2.3 支持Windows连接

    我们同样能够在Windows上连接一个远程的iOS设备,但是依然需要有Mac电脑与Xcode环境。首先按照上文的部署教程在Mac上启动iOS-Tagent之后,不再使用iproxy启动代理,而是改用wdaproxy。因为iproxy只支持本机端口的映射,而wdaproxy能够支持远程IP映射,这意味着可以在第二部PC上,通过访问IP的方式访问到Mac电脑上连接的iOS设备。

    通过brew install openatx/tap/wdaproxy安装好wdaproxy

    使用方法与iproxy一致,wdaproxy 8100 8100,或者不填写端口也可以,默认将会使用8100:




    6.3 开始测试


    iOS的测试和其它设备差不多,支持图像识别和UI检索,下面简单介绍一个iOS测试例子:

    • 连接设备
    • 点击home键
    • 截屏
    • 执行滑动操作
    • 使用Poco点击App Safari
    • 使用Poco点击浏览器的搜索框,获取焦点
    • 在搜索框输入“Airtest”
    • 在搜索页面往下滑动
    • 判断是否存在Airtest官网地址
    from airtest.core.api import *
    from poco.drivers.ios import iosPoco
    poco = iosPoco()
    
    auto_setup(__file__)
    connect_device("ios:///x.x.x.x:8100")
    keyevent("HOME")
    snapshot()
    swipe(Template(r"tpl1561985939879.png", record_pos=(0.356, -0.174), resolution=(750.0, 1334.0)), vector=[-0.685, 0.0481])
    
    poco("Safari").click()
    poco("URL").click()
    text("airtest")
    
    poco("People also search for").swipe([-0.0541, -0.4206])
    exists(Template(r"tpl1560844284543.png", record_pos=(-0.292, 0.688), resolution=(750, 1334)))
    




    6.4 常见问题


    (1)如何在模拟器中安装应用
    * 把xx.ipa 改成xx.zip,解压得到xx.app
    * 打开模拟器,在终端运行 xcrun simctl install booted xx.app
    **tips**:不可以把真机App包安装在iOS模拟器上,真机的App是基于Arm的,而模拟器是运行在X86指令集上的,强行安装会导致闪退的问题。

    (2)如何进行iOS多机测试 

    • 目前暂未开放iOS多机测试功能,敬请期待。

    (3)API支持状况
    请注意,iOS设备与Android设备有很大的不同,以下通用的Airtest的API在iOS上都是支持的:

    • start_App:OK
    • stop_App:OK
    • snapshot:OK
    • home:OK
    • touch:OK
    • swipe:OK
    • text:OK
    • wait:OK
    • exists:OK
    • find_all:OK
    • assert_exists:OK
    • assert_not_exists:OK

    但是以下API是不支持的:

    • wake:暂未支持(考虑用home方法替代)
    • keyevent:只支持home事件
    • clear_App:暂未支持
    • install:暂未支持
    • uninstall:暂未支持
  • 相关阅读:
    认证与授权(访问控制)
    文件上传漏洞
    注入攻击
    HTML 5 安全
    Linux添加开机启动命令
    mysql开启远程访问权限
    mysql_connect() php7不支持,php5.5可以,是废弃函数
    REGEXP 正则的实现两个字符串组的匹配。(regexp)
    文章排序权重
    Redis 基本操作
  • 原文地址:https://www.cnblogs.com/ShineLeem/p/11326189.html
Copyright © 2011-2022 走看看