• 3. UITest笔记


    1.    XCUIApplication *app = [[XCUIApplication alloc] init];

    App为查询的入口,当界面发生变化,查询数也会随之更新。

    即使是先前存储的XCUIElement也会在下一次使用的时候,根据查询Element所用的Query再次查询后执行操作。

    2.   UIView.Hidden = YES的时候,可以通过Query找到这个View。

    3.    UIView被遮挡时,仍然可以使用Query找到这个View。

    4.    [XCUIElement tap]可能会失效。

    Tap流程:1)查询这个控件 2)将这个控件滑动到屏幕可见范围 3)向这个控件捕获一个可点击点发送点击消息

    理论上使用Tap的时候不用考虑在可滑动控件(Tableview, Scrollview, etc)内的控件是否在屏幕内,只需要考虑这个控件是否有可点击的点(isHittable = YES)

    如果被遮挡,会抛出异常Unable to find a hittable point to tap。如果在不可滑动控件内,会抛出异常Unable to scroll to element。

    实际上,可能经常要处理滑动的问题。

    当被遮挡时,若不被点击的对象不冲突,可以使用XCUICoordinate来点击屏幕上的点进行点击。

    但是使用点点击的时候,不会自动将控件滑动到屏幕内,当点击屏幕外的点击的时候,目前的操作是会出现滑动操作。

    所以使用点点击的时候,需要注意将控件滑动到屏幕内。

    注:TableviewCell和CollectionviewCell这些可以重用的控件,在重用池也会被查询到,比较难处理。

    注:使用XCUICoordinate进行点击的时候不建议使用左上角(在5S上使用时容易失效)

    5.    高度自定义的控件现无法被查询到。

    6.    处理有图像的控件

    若图像来自于非本地,通常无标识符。

    若图像来自于本地,这类控件的Label通常为图像的名称(不兼容字符变成空格)。

    在XCode7.3中,当通过事件,图像发生变化的时候,这个Label不会发生变化,所以无法通过这个控件的图像来检测状态,如果是Button,可以使用iSSelected查询点击态。

    7.    UITests只能处理对应App的行为,若发生跨App操作(如第三方登录)会在查询时抛出异常。

    8.   在XCode7.3中, 对于可重用控件,重用的和初始化的极有可能在查询时查询树结构不同,所以根据情况需要区别处理。

    常见问题

    1. UITextField等需要先Tap再TypeText,有时模拟器键盘不弹出会导致TypeText崩溃。

         make sure 'Hardware -> Keyboard -> Connect hardware keyboard' is off.
       

          2.  常见错误之一


          录制时,操作了不错可查询控件(如isAccessibilityElement为No的控件),会产生这种错误。

        3. 获取屏幕尺寸的问题

       UI Test目前在另一个App进程里运行,在这个进程中使用UI相关的类会产生错误。

       如通常获取屏幕尺寸的方法为[UIScreen mainScreen].bounds.size。但是这在UI Test中获取的屏幕尺寸是错误的,目前总为4s的尺寸。

       如果需要获取屏幕尺寸,比较精确的方法是通过XCUIApplication查询windows中查询mainWindow这个控件,然后获取mainWindow.frame就是屏幕的尺寸。

  • 相关阅读:
    指针数组和数组指针表示二维数组
    scanf与getchar()区别
    选择循环
    朴素的思想
    asp.net中word转html碰到的权限异常问题(转)
    MAC下安装Fiddler抓包工具
    抓包工具charles的使用
    mysql 命令大全
    利用反射拼接SQL查询条件字符串
    赚自己的淘宝佣金,让返利网无路可走
  • 原文地址:https://www.cnblogs.com/luerniu/p/6393151.html
Copyright © 2020-2023  润新知