zoukankan      html  css  js  c++  java
  • 2. UITest相关APIs

    1. XCUIApplication

    这是你正在测试的应用的代理。它能让你启动应用,这样你就能执行测试了。它每次都会新起一个进程,这会多花一些时间,但是能保证测试应用时的状态是干净的,这样你需要处理的变量就少了些。

    - (void)launch;//启动应用。如果目标应用已运行,首先终止应用,然后再次启动应用。
    - (void)terminate;//关闭应用。
    @property (nonatomic, copy) NSArray <NSString *> *launchArguments;//数组对象,保存启动参数。
    @property (nonatomic, copy) NSDictionary <NSString *, NSString *> *launchEnvironment;//字典对象,保存启动环境变量

    2. XCUIElement

    这是你正在测试的应用中UI元素的代理。每个元素都有类型和标识符,结合二者就能找到应用中的UI元素。所有的元素都会嵌套在代表你的应用的树中。

    @property (readonly) BOOL exists;
    这个控件是否存在(不管被遮挡或者不在当前屏幕内都是YES)

    @property (readonly, getter = isHittable) BOOL hittable;
    这个控件是否能找到一个点可以点击

    - (XCUIElementQuery *)descendantsMatchingType :(XCUIElementType)type;
    在这个元素里按照固定的类型寻找其所有的子元素,如:
    在Table的Cell里寻找所有的子Button

    locButton = [cell descendantsMatchingType:XCUIElementTypeButton];

    - (XCUIElementQuery *)childrenMatchingType :(XCUIElementType)type;
    在这个元素里按照固定的类型寻找其所有直接的子元素(即无法查找子元素的子元素),和上一个方法类似。

    - (XCUICoordinate *)coordinateWithNormalizedOffset :(CGVector)normalizedOffset;

    在这个控件里根据CGVector的比例返回一个点。

    XCUICoordinate *bot = [window coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.5)];//在Window中X比例为0.5,Y比例为0.5的一个点

    @property (readonly, copy) NSString *debugDescription;

    上面已经叙述过了,就是查询的调试信息。

    - (void)typeText :(NSString *)text;

    可以用这个方法对UITextField 和 UITextView等输入,但调用之前需要确保键盘已经弹出,否则会出错。

    - (void)tap;
    单击这个控件一次

    - (void)doubleTap;
    双击这个控件一次

    - (void)twoFingerTap;
    双指点击

    - (void)tapWithNumberOfTaps :(NSUInteger)numberOfTaps numberOfTouches :(NSUInteger)numberOfTouches;

    可以指定点击几次,每次用几个手指

    - (void)pressForDuration :(NSTimeInterval)duration;
    长按手势,可以指定长按的时间。

    - (void)pressForDuration :(NSTimeInterval)duration thenDragToElement :(XCUIElement *)otherElement;
    先长按然后再拖动到另一个元素的位置,多用于TableView的MoveCell。

    - (void)swipeUp;
    - (void)swipeDown;
    - (void)swipeLeft;
    - (void)swipeRight;
    上下左右滑动的手势。

    - (void)pinchWithScale :(CGFloat)scale velocity :(CGFloat)velocity;
    Pinch的手势。

    - (void)rotate :(CGFloat)rotation withVelocity :(CGFloat)velocity;
    旋转的手势。

    - (void)adjustToNormalizedSliderPosition :(CGFloat)normalizedSliderPosition;
    设置一个Slider当前的Value值,设置的值的范围在[0 , 1]。

    @property (readonlyCGFloat normalizedSliderPosition;
    返回一个Slider当前Value的值,值的范围在[0 , 1]。

    - (void)adjustToPickerWheelValue :(NSString *)pickerWheelValue;
    设置一个PikerView的值为多少。

    3. XCUIElementAttributes

    /*! The accessibility identifier. */
    @property (readonly) NSString *identifier;
    
    /*! The frame of the element in the screen coordinate space. */
    @property (readonly) CGRect frame;
    
    /*! The raw value attribute of the element. Depending on the element, the actual type can vary. */
    @property (readonly, nullable) id value;
    
    /*! The title attribute of the element. */
    @property (readonly, copy) NSString *title;
    
    /*! The label attribute of the element. */
    @property (readonly, copy) NSString *label;
    
    /*! The type of the element. /seealso XCUIElementType. */
    @property (readonly) XCUIElementType elementType;
    
    /*! Whether or not the element is enabled for user interaction. */
    @property (readonly, getter = isEnabled) BOOL enabled;
    
    /*! The horizontal size class of the element. */
    @property (readonly) XCUIUserInterfaceSizeClass horizontalSizeClass;
    
    /*! The vertical size class of the element. */
    @property (readonly) XCUIUserInterfaceSizeClass verticalSizeClass;
    
    /*! The value that is displayed when the element has no value. */
    @property (readonly, nullable) NSString *placeholderValue;
    
    /*! Whether or not the element is selected. */
    @property (readonly, getter = isSelected) BOOL selected;
    
    #if TARGET_OS_TV
    /*! Whether or not the elment has UI focus. */
    @property (readonly) BOOL hasFocus;

    4. XCUIElementTypeQueryProvider协议

    @property (readonly, copy) XCUIElementQuery *touchBars;
    @property (readonly, copy) XCUIElementQuery *groups;
    @property (readonly, copy) XCUIElementQuery *windows;
    @property (readonly, copy) XCUIElementQuery *sheets;
    @property (readonly, copy) XCUIElementQuery *drawers;
    @property (readonly, copy) XCUIElementQuery *alerts;
    @property (readonly, copy) XCUIElementQuery *dialogs;
    @property (readonly, copy) XCUIElementQuery *buttons;
    @property (readonly, copy) XCUIElementQuery *radioButtons;
    @property (readonly, copy) XCUIElementQuery *radioGroups;
    @property (readonly, copy) XCUIElementQuery *checkBoxes;
    @property (readonly, copy) XCUIElementQuery *disclosureTriangles;
    @property (readonly, copy) XCUIElementQuery *popUpButtons;
    @property (readonly, copy) XCUIElementQuery *comboBoxes;
    @property (readonly, copy) XCUIElementQuery *menuButtons;
    @property (readonly, copy) XCUIElementQuery *toolbarButtons;
    @property (readonly, copy) XCUIElementQuery *popovers;
    @property (readonly, copy) XCUIElementQuery *keyboards;
    @property (readonly, copy) XCUIElementQuery *keys;
    @property (readonly, copy) XCUIElementQuery *navigationBars;
    @property (readonly, copy) XCUIElementQuery *tabBars;
    @property (readonly, copy) XCUIElementQuery *tabGroups;
    @property (readonly, copy) XCUIElementQuery *toolbars;
    @property (readonly, copy) XCUIElementQuery *statusBars;
    @property (readonly, copy) XCUIElementQuery *tables;
    @property (readonly, copy) XCUIElementQuery *tableRows;
    @property (readonly, copy) XCUIElementQuery *tableColumns;
    @property (readonly, copy) XCUIElementQuery *outlines;
    @property (readonly, copy) XCUIElementQuery *outlineRows;
    @property (readonly, copy) XCUIElementQuery *browsers;
    @property (readonly, copy) XCUIElementQuery *collectionViews;
    @property (readonly, copy) XCUIElementQuery *sliders;
    @property (readonly, copy) XCUIElementQuery *pageIndicators;
    @property (readonly, copy) XCUIElementQuery *progressIndicators;
    @property (readonly, copy) XCUIElementQuery *activityIndicators;
    @property (readonly, copy) XCUIElementQuery *segmentedControls;
    @property (readonly, copy) XCUIElementQuery *pickers;
    @property (readonly, copy) XCUIElementQuery *pickerWheels;
    @property (readonly, copy) XCUIElementQuery *switches;
    @property (readonly, copy) XCUIElementQuery *toggles;
    @property (readonly, copy) XCUIElementQuery *links;
    @property (readonly, copy) XCUIElementQuery *images;
    @property (readonly, copy) XCUIElementQuery *icons;
    @property (readonly, copy) XCUIElementQuery *searchFields;
    @property (readonly, copy) XCUIElementQuery *scrollViews;
    @property (readonly, copy) XCUIElementQuery *scrollBars;
    @property (readonly, copy) XCUIElementQuery *staticTexts;
    @property (readonly, copy) XCUIElementQuery *textFields;
    @property (readonly, copy) XCUIElementQuery *secureTextFields;
    @property (readonly, copy) XCUIElementQuery *datePickers;
    @property (readonly, copy) XCUIElementQuery *textViews;
    @property (readonly, copy) XCUIElementQuery *menus;
    @property (readonly, copy) XCUIElementQuery *menuItems;
    @property (readonly, copy) XCUIElementQuery *menuBars;
    @property (readonly, copy) XCUIElementQuery *menuBarItems;
    @property (readonly, copy) XCUIElementQuery *maps;
    @property (readonly, copy) XCUIElementQuery *webViews;
    @property (readonly, copy) XCUIElementQuery *steppers;
    @property (readonly, copy) XCUIElementQuery *incrementArrows;
    @property (readonly, copy) XCUIElementQuery *decrementArrows;
    @property (readonly, copy) XCUIElementQuery *tabs;
    @property (readonly, copy) XCUIElementQuery *timelines;
    @property (readonly, copy) XCUIElementQuery *ratingIndicators;
    @property (readonly, copy) XCUIElementQuery *valueIndicators;
    @property (readonly, copy) XCUIElementQuery *splitGroups;
    @property (readonly, copy) XCUIElementQuery *splitters;
    @property (readonly, copy) XCUIElementQuery *relevanceIndicators;
    @property (readonly, copy) XCUIElementQuery *colorWells;
    @property (readonly, copy) XCUIElementQuery *helpTags;
    @property (readonly, copy) XCUIElementQuery *mattes;
    @property (readonly, copy) XCUIElementQuery *dockItems;
    @property (readonly, copy) XCUIElementQuery *rulers;
    @property (readonly, copy) XCUIElementQuery *rulerMarkers;
    @property (readonly, copy) XCUIElementQuery *grids;
    @property (readonly, copy) XCUIElementQuery *levelIndicators;
    @property (readonly, copy) XCUIElementQuery *cells;
    @property (readonly, copy) XCUIElementQuery *layoutAreas;
    @property (readonly, copy) XCUIElementQuery *layoutItems;
    @property (readonly, copy) XCUIElementQuery *handles;
    @property (readonly, copy) XCUIElementQuery *otherElements;
  • 相关阅读:
    最小路径和
    S2 深入.NET和C#编程 机试测试错题积累
    S2 深入.NET和C#编程 笔试测试错题积累
    影院项目的内容信息
    抽象类和抽象的方法注意事项
    六种设计原则
    体检套餐的笔记
    C#图解 类和继承
    深入类的方法
    S2 深入.NET和C#编程 三:使用集合组织相关数据
  • 原文地址:https://www.cnblogs.com/luerniu/p/6393132.html
Copyright © 2011-2022 走看看