autojs学习之路(二)基于控件

小宇
2022-09-13 / 0 评论 / 101 阅读 / 正在检测是否收录...
className 类名。类名表示一个控件的类型,例如文本控件为"android.widget.TextView", 图片控件为"android.widget.ImageView"等。
packageName 包名。包名表示控件所在的应用包名,例如QQ界面的控件的包名为"com.tencent.mobileqq"。
bounds 控件在屏幕上的范围。
clickable 控件是否可点击。
longClickable 控件是否可长按。
click() 点击。点击一个控件,前提是这个控件的clickable属性为true
longClick() 长按。长按一个控件,前提是这个控件的longClickable属性为true
setText() 设置文本,用于编辑框控件设置文本。
scrollup()滑动

控件文档跳转

控件选择(UiSelector)

链式调用
寻找能点击的控件
text("微信").findOne().parent().parent().click()
desc("微信").findOne().click()

className(str)跳转
布局层次中查看

text找到”五条单身狗“群聊,并发送早上好

home()
click("微信")
text("五条单身狗").findOne().parent().parent().parent().parent().parent().click()
setText("早上好")
text("发送").findOne().click()

通过坐标点击

//bounds()返回控件在屏幕上的范围

var x=text("五条单身狗").findOne().bounds().centerX()
var y=text("五条单身狗").findOne().bounds().centerY()
click(x,y)

~小宇还是很喜欢坐标的

home()
sleep(1500)
click("微信")                                       //打开微信
text("发现").findOne().parent().parent().click()    //发现页面
var px=text("朋友圈").findOne().bounds().centerX()
var py=text("朋友圈").findOne().bounds().centerY()
click(px,py)                                        //打开朋友圈
var x=id("by3").findOne().bounds().centerX()
var y=id("by3").findOne().bounds().centerY()
longClick(x,y)                                      //长按小相机
var dx=id("jsx").findOne().bounds().centerX()
var dy=id("jsx").findOne().bounds().centerY()
click(dx,dy)                                        //获取焦点
setText("测试一键发表朋友圈")                        //设置文字
click("发表")                                       //发表

例子都还需优化,都有限制条件, 解除必须在首页的限制条件 (已解决)。发表自定义文字后期再解决,小宇还不会

bounds->其值是一个 RECT对象

控件对象的操作方法

UiObject

UiObject表示一个控件,可以通过这个对象获取到控件的属性,也可以对控件进行点击、长按等操作。
获取一个UiObject通常通过选择器的findOne(), findOnce()等函数,也可以通过UiCollection来获取,或者通过UiObject.child(), UiObject.parent()等函数来获取一个控件的子控件或父控件。
上面小宇研究的好像就是介个,过,下一个

查找控件

【findOne()】对当前屏幕上的控件进行搜索。
【findOne(timeout)】findOne(5000) 5秒找不到就下一个。
超时未找到则终止搜索并返回null。
【findOnce()】findOnce(0)寻找第1个。findOnce(i)->寻找第(i+1)个。
如果找到符合条件的控件则返回该控件;否则返回null。
【find()】
找到所有满足条件的控件集合并返回【返回 {UiCollection}
【untilFind()】
直到找到至少一个满足条件的控件为止,并返回所有满足条件的控件集合。
【exists()】

if(text("某个文本").exists()){
    //要支持的动作
}

控件集合的操作方法

UiCollection, 控件集合, 通过选择器的find(), untilFind()方法返回的对象。
["控件一","控件二","控件三","控件四","控件五"]
控件一.click()
id("bth").find().get(i).click()
find()找到集合,get()第(i+1)个,返回控件UiObject。

1

评论 (0)

取消