4. UITest常用方法

1.    [XCUIElement exists]方法只能确定这个View是否存在,即使不在当前屏幕上也返回True。如果要确定View是否在屏幕可见范围内,可以判断其Frame是否在Window的Frame内。

XCUIElement *window = [app.windows elementBoundByIndex:0];

if (CGRectContainsRect([window frame], [cell frame])) {

[cell tap];

}

2.  等待一个控件出现的方法(登录结果,是否已经跳转到另一个VC)

左边的VC点击确定会跳转到右边的VC

XCUIElement *alertView = app.alerts.collectionViews.buttons[@"确定"];

if ([alertView exists]) {

XCTAssertTrue([app.alerts.staticTexts[@"登录成功"] exists]);

XCUIElement *nextVC = app.staticTexts[@"B"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"exists == true"];

[self expectationForPredicate:predicate evaluatedWithObject:nextVC handler:nil];

[alertView tap];

[self waitForExpectationsWithTimeout:5 handler:nil];    //最多等待5秒直到B出现

XCTAssertTrue([app.staticTexts[@"B"] exists]);

}

3.  查看Query的过程

使用打印方法查看[XCUIElement(Query) debugDescription]。可以从DebugDescription中识别控件的Bounds属性识别控件,如下:

4.  获得TableView的自带控件

XCUIElement *prepareDelete = app.buttons[@"Delete 1"];

[prepareDelete tap]; //点击左侧编辑按钮

XCUIElement *delete = app.buttons[@"Delete"];

[delete tap]; //点击左滑出的Delete按钮(可能不叫Delete)

XCUIElement *reorder = app.buttons[@"Reorder 1"];     //第一个Cell的重排按钮(名称为Reorder和具体数据)

XCUIElement *reorder2 = app.buttons[@"Reorder 2"];     //第二个cell的重排按钮

[reorder pressForDuration:1 thenDragToElement:reorder2]; //将第一个Cell移动到第二个Cell

5.  如何滑动刷新

滑动刷新的就是实现足够距离的滑动操作。

实现方式主要是两种:

1.从屏幕上取两个点进行滑动

2.调用可滑动页面内的控件的[SwipeUp/Down]方法。

例子:

1. 取点滑动

XCUIElement *cell = [app.tables.cells elementBoundByIndex:0]; //最上方的Cell

XCUICoordinate *start = [cell coordinateWithNormalizedOffset:CGVectorMake(0, 0)];

XCUICoordinate *end = [cell coordinateWithNormalizedOffset:CGVectorMake(0, 6)]; //屏幕外一个点,dy=6据说是刷新要求的最小值

[start pressForDuration:0 thenDragToCoordinate:end];

2. Swipe

XCUIElement *table = [app.tables elementBoundByIndex:0];

[table swipeUp];

PS:对自身不可滑动控件进行Swipe滑动,若控件在可滑动控件内,会导致这个可滑动控件滑动。如上滑TableviewCell会使其Tableview上滑。

6.  按动硬件按钮的方法

XCUIDevice *device = [XCUIDevice sharedDevice];

[device pressButton:XCUIDeviceButtonHome]; //枚举只有三个值 Home键,音量Up,音量Down(模拟器只能按Home键)

7.  点击被遮挡控件的方法

XCUIElement *cell = [collectView.cells elementBoundByIndex:i];

if ([cell isHittable]) {

[cell tap];

} else {

XCUICoordinate *coo = [cell coordinateWithNormalizedOffset:CGVectorMake(0, 0)];

[coo tap];

}

PS:只能用点点击时,若点在屏幕外,目前只会出现滑动操作。

时间: 2024-08-11 09:56:03

4. UITest常用方法的相关文章

从头认识java-15.2 Collection的常用方法

这一章节我们来介绍一下Collection的常用方法. 我们下面以ArrayList为例. package com.ray.ch14; import java.util.ArrayList; import java.util.Iterator; public class Test { public static void main(String[] args) { ArrayList<Integer> rtnList = new ArrayList<Integer>(); rtnL

java中String的常用方法

java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3. getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[]

查看Oracle执行计划的几种常用方法-系列1

SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向. 执行计划的定义:执行目标SQL的所有步骤的组合. 我们首先列出查看执行计划的一些常用方法: 1. explain plan命令 PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了.但其实按下F5后,实际后台调用的就是explain plan命令,相当于封装了该命令. explain plan

检查主板故障的常用方法

主板故障往往表现为系统启动失败.屏幕无显示等难以直观判断的故障现象.下面列举的维修方法各有优势和局限性,往往结合使用. 1.清洁法 可用毛刷轻轻刷去主板上的灰尘,另外,主板上一些插卡.芯片采用插脚形式,常会因为引脚氧化而接触不良.可用橡皮擦去表面氧化层,重新插接. 2.观察法 反复查看待修的板子,看各插头.插座是否歪斜,电阻.电容引脚是否相碰,表面是否烧焦,芯片表面是否开裂,主板上的铜箔是否烧断.还要查看是否有异物掉进主板的元器件之间.遇到有疑问的地方,可以借助万用表量一下.触摸一些芯片的表面,

Rhythmk 一步一步学 JAVA (20) JAVA enum常用方法

JAVA 枚举定义常用方法: 1.static Enum valueOf(Class enum,String name) 返回指定name的枚举类型 2.Static Enum values[] 返回枚举常量集合 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Javascript - ExtJs - 常用方法和属性

常用方法和属性(Common methods and attributes) 获取 get(x) x是元素的ID || dom元素对象 || ExtElement对象 将参数所指转化为ExtElement对象并返回它(非Dom元素对象,而是对Dom元素的封装),此方法等同于new Ext.Element(x) . Ext.select(x) x是选择器 返回一个CompositeElement对象,表示ExtElment对象的集合.但返回的这个对象实际上并非数组,不能通过数组索引访问它包含的数据

Request常用方法

一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 二.Request常用方法 2.1.获得客户机信息 getRequestURL方法返回客户端发出请求时的完整URL.  getRequestURI方法返回请求行中的资源名部分.  getQueryString 方法返回请求行中的参数部分.  getPath

window对象的常用属性,常用方法

window对象的常用属性: window.self 返回当前窗口的引用 window.parent   返回当前窗体的父窗体对象 window.top 返回当前窗体最顶层的父窗体的引用 window.outerwidth       返回当前窗口的外部宽 window.outerheight  返回当前窗口的外部高 window.innerwidth       返回当前窗口的可显示区域宽 window.innerheight  返回当前窗口的可显示区域高 提示:通过直接在Chrome控制台中

Java实战之02Hibernate-03Session中的常用方法

九.Session中的常用方法 1.save方法 都是临时态————>持久态 2.persist方法 作用: 持久化临时态对象. 与save方法的区别: 开始了事务:persist和save没有区别. 不开启事务: persist:什么都不会做. save: hibernate3:计划保存数据,因为没有开启事务,自动回滚. hibernate5:提供一个内置事务执行保存操作. 1 /* 2 * save方法和persist方法 3 * 共同点: 4 * 都是把临时态对象转成持久态 5 * 区别: