欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 自动化测试经验分享 UiObejct.getFromParent()的使用方法

程序员文章站 2023-11-23 22:52:22
1. uiobejct.getfromparent()的用法:从这个名字就知道,就是从当前对象的父对象中查找想要的子对象,该子对象和当前对象应该是同一层级。 如上图所...

1. uiobejct.getfromparent()的用法:从这个名字就知道,就是从当前对象的父对象中查找想要的子对象,该子对象和当前对象应该是同一层级。

Android 自动化测试经验分享 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.");
        }
    }
 }