Chimpchat自动旅程

时间:2014-01-31 13:18:41

标签: android monkeyrunner

我的目标是让猴子访问给定Android应用程序的所有页面/活动。 我目前正在使用Chimpchat,我的第一步如下:

1 - 与设备的连接:

TreeMap<String, String> options = new TreeMap<String, String>();
options.put("backend", "adb");
options.put("adbLocation", ADB);
mChimpchat = ChimpChat.getInstance(options);
mDevice = mChimpchat.waitForConnection(TIMEOUT, ".*");
mDevice.wake();

2 - 获取视图ID列表:

mDevice.getViewIdList();

3 - 对于每个字符串(使用迭代器)ID包含在getViewIdList()返回的列表中,我想访问Class,Text if if,bounds等...

 while (it.hasNext()) {
        String s = it.next();
        System.out.println(s + " : ");
        try {
            IChimpView v = mDevice.getView(By.id(s));
            System.out.println(v);
            System.out.println(v.getViewClass() + "  : " );
            if (v.getViewClass().toString() == "TextView") {
                System.out.print(v.getText());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

我在

上得到了一个例外
v.getViewClass()


com.android.chimpchat.core.ChimpException: Node with given ID does not exist
at com.android.chimpchat.ChimpManager.queryView(ChimpManager.java:415)
at com.android.chimpchat.core.ChimpView.queryView(ChimpView.java:53)
at com.android.chimpchat.core.ChimpView.getViewClass(ChimpView.java:96)
at JavaMonkey.listViewsID(JavaMonkey.java:80)
at JavaMonkey.main(JavaMonkey.java:114)

如果有人可以指出我的错误或指出我的另一种方法,我们将不胜感激!

2 个答案:

答案 0 :(得分:1)

我认为Robotium更适合这种类型的测试。根据我的经验,使用adb / MonkeyRunner访问远程设备上的视图并不是非常可靠。此外,Robotium具有许多很酷的功能,可以轻松集成到现有的测试套件中。

答案 1 :(得分:0)

我认为问题在于没有Activity正在运行。 正如我上面评论的那样,您可以使用startActivity来启动它。 然而,这将需要一些挖掘来弄清楚所有需要传递的内容 另一种解决方案如下:

StringBuilder builder = new StringBuilder();
builder.append("am start -a android.intent.action.MAIN -n ");
builder.append(mPackage).append("/").append(mActivity);
String output = mDevice.shell(builder.toString());

这将使用adb shell启动应用程序。 mPackage =包路径(com.company.application)和mActivity =活动(.MyActivity)。从那里,您应该能够mDevice.getHierarchyViewer()mDevice.getViewIdList()