系列介绍
OP 类概要
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();
- 该方法用来查找元素,能够自动区分 text 所属类别
查找元素,返回 org.openqa.selenium.By
/**
* 查找元素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();
- 该方法用来生成 By 对象,用于其它无法自动区分类别的查找方法等
设置脚本分辨率
/**
* 设置当前脚本运行的设备高与宽;
* 在不同尺寸的设备运行时,会自动调整脚本中的坐标点;
* 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);//本次不自适应坐标
- 用于自适应坐标,设置后,OP.tap 等按坐标点击的方法将按设备分辨率自适应调整.
- 取消自适应坐标,只对之后的一次自适应调整生效.
等待时间
/**
* 休眠 单位秒(不精确,近似时间)
*
* @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);
- 如果方法为 UP,startadjust 则为向上滑动的那一端,endadjust 为向上滑动结束的那一端
拖动控件,查找元素
/**
* 拖动控件查找控件内的目标元素
* 如果元素位于非滑动范围(调整值内),则无效,将继续滑动查找符合滑动范围内的元素
* @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);
拖动控件,查找滑动框中指定元素的 text 名称
/**
* 拖动进度条,获取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);
控件对象 ElementAndroid/ElementIOS
- 使用 OP 查找到的元素,均以 ElementAndroid/ElementIOS 返回
- 该对象类似原生 Appium 的 AndroidElement/IOSElement
/**
* 点击
*
* @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();
XQOP-android
- 根据当前 XML 自定义的一套控件体系
- 主要用来点击动态页面等 (初始化 appium 时自动点击安装提示框框架用到了这个)
- 获取当前 xml 并解析 (获取时无法与 appium 同时使用),得到界面元素坐标,adb 命令操作设备
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();
转载文章时务必注明原作者及原始链接,并注明「发表于 TesterHome 」,并不得对作品进行修改。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。