OP 类 (operation) 主要包含各种查找元素/操作设备等方法,是最常用的类,没有之一.
iOS 与 Android 的 OP 类大致相同,但部分也有区别,详细查看方法注释!
由于版本持续更新,以下方法可能会存在变化,请以当前框架方法注释为准
/**
* 查找元素
* Android自动区分xpath/text/id/classname(以#开头则以accessibilityid查找);
* iOS自动区分name/xpath/NsPredicate;
* NsPredicate:BETWEEN,CONTAINS,BEGINSWITH,ENDSWITH,LIKE,MATCHES,AND,OR
*
* @param text
* @return
*/
BaseElement findElement(String text);
//PS
OP.findElement(首页).click();
/**
* 查找元素By
* Android自动区分xpath/text/id/classname(以#开头则以accessibilityid查找);
* iOS自动区分name/xpath/NsPredicate;
* NsPredicate:BETWEEN,CONTAINS,BEGINSWITH,ENDSWITH,LIKE,MATCHES,AND,OR
*
* @param text
* @return
*/
By MobileBy(String text);
//PS
OP.findElement(OP.MobileBy(首页)).click();
/**
* 设置当前脚本运行的设备高与宽;
* 在不同尺寸的设备运行时,会自动调整脚本中的坐标点;
* iOS为point,Android为像素点;
*
* @param width 设备宽
* @param hight 设备高
*/
void setScreenSize(int width, int hight);
//PS
OP.setScreenSize(720, 1080);
/**
* 取消下一次的自适应坐标
*
* @return
*/
<T> T cancelAutoMultiple();
//PS
OP.cancelAutoMultiple().tap(100,100);//本次不自适应坐标
/**
* 休眠 单位秒(不精确,近似时间)
*
* @param second
*/
void sleep(int second);
/**
* 系统休眠.最大时长为设置的capabilityMap中的newCommandTimeout时间减去30秒.
*
* @param millisecond 毫秒
*/
public void sysSleep(long millisecond){};
/**
* 处理单个或连续权限提示(当前按钮含有关键字时点击)
* iOS当含有{ "以后", "稍后" }时进行点击,如果不含则默认点击弹出框右边按钮
* @return 是否处理过权限提示
*/
boolean HandlePermission();
/**
* 注册Ui异常监听器
*/
void registerUiWatcher(String name, UiWatcher uiWatcher);
//PS
OP.registerUiWatcher("权限处理", new UiWatcher() {
@Override
public boolean checkForCondition() {
// TODO Auto-generated method stub
if (OP.findOneOfElements(1, OP.MobileBy(广告弹窗_关闭1), OP.MobileBy(广告弹窗_下拉关闭), OP.MobileBy(广告弹窗_关闭),
OP.MobileBy("点击任意位置唤醒"), OP.MobileBy("我知道了"), OP.MobileBy(提交错误信息)).click())
return true;
if (OP.HandlePermission())
return true;
return false;
}
});
/**
* 取消下一次查找的异常监听器及警告日志
*
* @return
*/
<T> T cancelUiWathcher();
//PS
OP.cancelUiWathcher().findElement(首页).click();//当第一次查找"首页"元素没有找到时,将运行registerUiWatcher()中的步骤进行处理异常,处理完后会再进行一次查找"首页元素",如果查找到则进行点击,如果未找到则显示警告
OP.EXTEND_SWIPE().xxx
/**
* 向下/上/左/右翻页
*
* @param times 执行次数
*/
void scrolldown(int times);
void scrollup(int times);
void scrollleft(int times);
void scrollright(int times);
/**
* 滑动滑动条,适用于小距离移动
*
* @param by
* @param direction 常量UP/DOWN/LEFT/RIGHT
* @param startadjust 开始端调整值,除去控件开始端的一段距离
* @param addx 移动的距离增量
* @param times 滑动次数
* @return
*/
public boolean swipeSeekbar(By by, String direction, int startadjust, int addx, int times);
/**
* 拖动滑动条
*
* @param by
* @param direction 常量UP/DOWN/LEFT/RIGHT
* @param startadjust 开始端调整值,除去控件开始端的一段距离
* @param endadjust 结束端调整值,除去控件结束端的一段距离
* @param times 滑动几次
* @return 是否找到控件
*/
public boolean dragSeekbar(By by, String direction, int startadjust, int endadjust, int times);
/**
* 拖动控件查找控件内的目标元素
* 如果元素位于非滑动范围(调整值内),则无效,将继续滑动查找符合滑动范围内的元素
* @param by
* @param targetby 目标
* @param 滑动多少次
* @param direction 常量UP/DOWN/LEFT/RIGHT
* @param startadjust 开始端调整值,除去控件开始端的一段距离
* @param endadjust 结束端调整值,除去控件结束端的一段距离
*/
public abstract <T> T dragSeekbarTo(By by, String direction, int startadjust, int endadjust, By targetby,
int scrollnum);
/**
* 拖动进度条,获取item的text,直到没有新的item,查找完后会反向拖动回到滑动框最初位置
*
* @param by 滑动框
* @param item 子项
* @param startadjust 开始端调整值,除去控件开始端的一段距离
* @param endadjust 结束端调整值,除去控件结束端的一段距离
* @param direction 方向UP/DOWN/LEFT/RIGHT
* @return
*/
public abstract List<String> dragSeekbarTogetItems(By by, String direction, By item, int startadjust,
int endadjust);
/**
* 点击
*
* @return
*/
public abstract boolean click();
/**
* 获取元素位置信息
*
* @return 0中心点坐标X,1中心点坐标Y,2矩形左上角坐标点X,3矩形左上角坐标点Y,4矩形宽度W,5矩形长度H (元素为空,则返回0)
*/
public int[] getPosition() {}
/**
* 元素是否存在
*
* @return boolean
*/
public abstract boolean exist();
OP.toXQOP().sleep(4000).setPage(OP.getPageSource());//等待4秒后使用appium获取x'm'l
OP.toXQOP().findElement(首页).click();
OP.toXQOP().getPage();//使用adb获取xml
OP.toXQOP().findElement(首页_按钮A).click();
OP.toXQOP().findElement(首页_按钮B).click();