Android 自动化测试经验分享 UiObejct.getFromParent()的使用方法
1. uiobejct.getfromparent()的用法:从这个名字就知道,就是从当前对象的父对象中查找想要的子对象,该子对象和当前对象应该是同一层级。
如上图所示:max inactivity before lock是已知条件,4 minutes是我想动态获取的内容。那应该怎么做呢?
先看看结构:tablelayout(curent index is 2) - tablerow(has several indexes) - textview(has 2 indexes)。
1.先获取tablelayout index为2的那个对象
2.遍历tablelayout里面的tablerow,获取tablerow(i)里头的textview(0)的text
3.当textview(1)的text内容为“max inactivity before lock”,则可以确定我们所要的那个tablerow了。(其实就是找对应的index)
4.然后我们就使用当前对象的getfromparent()方法去查找textview(1)的text,这样就可以取到我们想要的值了。
//下面2步是获取tablelayout下面tablerow的数量
uiobject allpasswordpolicies = new uiobject(new uiselector().classname("android.widget.tablelayout").index(2));
int pwdcount = allpasswordpolicies.getchildcount();
//遍历每一个tablerow
for(int i = 0; i < pwdcount; i++) {
uiobject passcodepolicyname = allpasswordpolicies.getchild(new uiselector().classname("android.widget.tablerow").index(i).childselector(new uiselector().classname("android.widget.textview").index(0)));
//查找tablerow中index为0的textview的值等于"max inactivity before lock"的对象
if(passcodepolicyname.gettext().contains("max inactivity before lock")) {
//使用getfromparent()和gettext()方法获取当前对象同级的textview,index为1的那个对象的text值。passcodepolicyname.getfromparent等同于tablerow(1)对象
string actualvalue = passcodepolicyname.getfromparent(new uiselector().classname("android.widget.textview").index(1)).gettext();
if(actualvalue.equals(expectedvalue)) {
system.out.println(policyname + " check: pass.");
} else {
system.out.println(policyname + " check: failed.");
}
}
}
上一篇: listview改变字体大小实例讲解