发布:2023/10/25 23:31:23作者:管理员 来源:本站 浏览次数:835
/**以下全部是基于控件 基于坐标的暂不整理 *//*** 第一步一定要先开启无障碍服务 最好7.0以上 7.0以下的有的命令需要root权限才可以 就没有意义了*/auto();//会自动检查是否开启无障碍 如果未开启会自动跳转到开启界面选择开启即可;//<--------------- 点击命令 ---------------->//点击文本 就是比如按钮中的文字click(text,i)//text {string} 要点击的文本 i {number} 如果相同的文本在屏幕中出现多次,则i表示要点击第几个文本, i从0开始计算 如果不填写 默认是点击所有click("啦啦啦", 0)//表示点击屏幕上第一个"啦啦啦", click("啦啦啦", 1)表示点击屏幕上第二个"啦啦啦"。longClick(text, i)//长按的意思UiObject.click()//控件点击UiObject.longClick()//控件长按//<--------------- 滑动命令 ---------------->scrollUp(i) //上滑此命令经测试在安卓7.0以下也有效i {number} 要滑动的控件序号scrollDown(i)//下滑和上述同理UiObject.scrollForward()//控件下滑UiObject.scrollBackward()//向后滑动UiObject.scrollUp()//对集合中所有控件执行向上滑的操作UiObject.scrollDown()//对集合中所有控件执行向下滑的操作UiObject.scrollLeft()//对集合中所有控件执行向左滑的操作UiObject.scrollRight()//右滑//<--------------- 输入命令 ---------------->setText(i,text)//输入文本i表示第一个输入框 从0开始计数input(i,text)//输入文本i表示第一个输入框 从0开始计数//两者区别 第一个是清空并填写 第二个是在原基础上追加(append)UiObject.setText(text)//控制输入UiObject.copy()//控件复制UiObject.cut()//剪切UiObject.paste()//粘贴/*** 常见控件的类名如下:android.widget.TextView 文本控件android.widget.ImageView 图片控件android.widget.Button 按钮控件android.widget.EditText 输入框控件android.widget.AbsListView 列表控件android.widget.LinearLayout 线性布局android.widget.FrameLayout 帧布局android.widget.RelativeLayout 相对布局android.widget.RelativeLayout 相对布局android.support.v7.widget.RecyclerView 通常也是列表控件*///<--------------- 其他命令整合(用到没有上述那么常用) ---------------->UiSelector.textContains(str) //包含文本UiSelector.textStartsWith(prefix)//以文本开头的组件UiSelector.desc(str)//获取描述UiSelector.descContains(str)//获取包含描述UiSelector.descStartsWith(prefix)//获取开头包含描述UiSelector.descEndsWith(suffix)//获取结尾包含描述UiSelector.descMatches(reg)//正则表达式UiSelector.id(resId)//idUiSelector.idContains(str)//包含idUiSelector.idStartsWith(prefix)//开始idUiSelector.idEndsWith(suffix)//结束idUiSelector.idMatches(reg)//正则表达式IDUiSelector.className(str)//类UiSelector.classNameContains(str)//包含类UiSelector.classNameStartsWith(prefix)//开始类UiSelector.classNameEndsWith(suffix)//结尾类UiSelector.classNameMatches(reg)//正则类UiSelector.packageName(str)//包名UiSelector.packageNameContains(str)//包含包UiSelector.packageNameStartsWith(prefix)//开头包UiSelector.packageNameEndsWith(suffix)//结束包UiSelector.packageNameMatches(reg)//正则包UiSelector.bounds(left, top, right, buttom)//组件范围UiSelector.boundsInside(left, top, right, buttom)//区域选择查找控件UiSelector.boundsContains(left, top, right, buttom)//也是区域查找UiSelector.drawingOrder(order)//绘制顺序UiSelector.clickable([b = true])//是否可以点击UiSelector.longClickable([b = true])// 表示控件是否可长按UiSelector.checkable([b = true])//表示控件是否可勾选UiSelector.selected([b = true])//表示控件是否被选UiSelector.enabled([b = true])//表示控件是否已启用UiSelector.scrollable([b = true])//表示控件是否可滑动UiSelector.editable([b = true])//表示控件是否可编辑UiSelector.multiLine([b = true])//表示文本或输入框控件是否是多行显示的UiSelector.findOne()//找一个 ******** 阻塞 *******UiSelector.findOne(timeout)//超时查找 ******** 阻塞 *******UiSelector.findOnce()//找不到返回空UiSelector.findOnce(i)//找第几个UiSelector.find()//找所有UiSelector.untilFind()//直到找到UiSelector.exists()//是否存在UiSelector.waitFor()//一直等待 ******** 阻塞 *******UiSelector.filter(f) //过滤函数/*** 例如,要找出屏幕上所有文本长度为10的文本控件的代码为:var uc = className("TextView").filter(function(w){return w.text().length == 10;});*/UiObject.setSelection(start, end)///*** 对输入框控件设置选中的文字内容,并返回是否操作成功。索引是从0开始计算的;并且,选中内容不包含end位置的字符。例如,如果一个输入框内容为"123456789",要选中"4567"的文字的代码为et.setSelection(3, 7)。该函数也可以用来设置光标位置,只要参数的end等于start,即可把输入框光标设置在start的位置。例如et.setSelection(1, 1)会把光标设置在第一个字符的后面。*/UiObject.collapse()//控件折叠children()//返回该控件的所有子控件组成的控件集合。可以用于遍历一个控件的子控件childCount()//返回子控件数目。child(i)//返回第i+1个子控件parent()//父控件bounds()//范围boundsInParent()//返回控件在父控件中的范围drawingOrder()//返回控件在父控件中的绘制次序。该函数在安卓7.0及以上才有效,7.0以下版本调用会返回0。id()//获取控件的id,如果一个控件没有id,则返回null。text()//获取控件的文本,如果控件没有文本,返回""。findByText(str)//根据文本text在子控件中递归地寻找并返回文本或描述(desc)包含这段文本str的控件,返回它们组成的集合。该函数会在当前控件的子控件,孙控件,曾孙控件...中搜索text或desc包含str的控件,并返回它们组合的集合。findOne(selector)//根据选择器selector在该控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回null。/*** 例如,对于酷安动态列表,我们可以遍历他的子控件(每个动态列表项),并在每个子控件中依次寻找点赞数量和图标,对于点赞数量小于10的点赞://找出动态列表var list = id("recycler_view").findOne();//遍历动态list.children().forEach(function(child){//找出点赞图标var like = child.findOne(id("feed_action_view_like"));//找出点赞数量var likeCount = child.findOne(id("text_view"));//如果这两个控件没有找到就不继续了if(like == null || likeCount == null){return;}//判断点赞数量是否小于10if(parseInt(likeCount.text()) < 10){//点赞like.click();}});*/find(selector)//根据选择器selector在该控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回它们组合的集合。UiCollection//控件数量/*** UiCollection"继承"于数组,实际上是一个UiObject的数组,因此可以使用数组的函数和属性,例如使用length属性获取UiCollection的大小,使用forEach函数来遍历UiCollection。例如,采用forEach遍历屏幕上所有的文本控件并打印出文本内容的代码为:console.show();className("TextView").find().forEach(function(tv){if(tv.text() != ""){log(tv.text());}});也可以使用传统的数组遍历方式:console.show();var uc = className("TextView").find();for(var i = 0; i < uc.length; i++){var tv = uc[i];if(tv.text() != ""){log(tv.text());}}UiCollection的每一个元素都是UiObject,我们可以取出他的元素进行操作,例如取出第一个UiObject并点击的代码为ui[0].click()。如果想要对该集合的所有元素进行操作,可以直接在集合上调用相应的函数,例如uc.click(),该代码会对集合上所有UiObject执行点击操作并返回是否全部点击成功。因此,UiCollection具有所有UiObject对控件操作的函数,包括click(), longClick(), scrollForward()等等,不再赘述。*/UiCollection.size()//返回集合中的控件数。 历史遗留函数,相当于属性length。UiCollection.get(i)//返回集合中第i+1个控件(UiObject)。历史遗留函数,建议直接使用数组下标的方式访问元素。empty()//返回控件集合是否为空。nonEmpty()//返回控件集合是否非空。UiCollection.find(selector)//根据selector所确定的条件在该控件集合的控件、子控件、孙控件...中找到所有符合条件的控件并返回找到的控件集合。注意这会递归地遍历控件集合里所有的控件以及他们的子控件。和数组的filter函数不同。UiCollection.findOne(selector)//根据选择器selector在该控件集合的控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回null。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4